英文:
Checking if a values from array exists in a second array in PHP
问题
我正在尝试检查数组1中的任何值是否存在于数组2中。我目前正在尝试使用foreach
和in_array
的组合来实现此目标:
数组1:
Array
(
[checkThis1] => 1234567
[checkThis2] => 7654321
[checkThis3] => 0101010
)
数组2:
Array
(
[0] => 0101010
[1] => 9324812
)
代码:
foreach ($array1 as $checkThis) {
if (in_array($checkThis, $array2)) {
echo "checkThis exists in array2";
return true;
}
echo "checkThis does not exist in array2";
return false;
}
正如您在上面所看到的,这两个数组的格式相同,因此不应该引起任何问题。但出于我不知道的原因,这个循环总是返回false,即使我确信该值存在于这两个数组中。
英文:
I am trying to check if any of the values from array 1 exist in array 2. I am currently trying to achieve this using a combination of foreach
and in_array
:
Array 1:
Array
(
[checkThis1] => 1234567
[checkThis2] => 7654321
[checkThis3] => 0101010
)
Array 2:
Array
(
[0] => 0101010
[1] => 9324812
)
Code:
foreach ($array1 as $checkThis) {
if (in_array($checkThis, $array2)) {
echo "checkThis exists in array2";
return true;
}
echo "checkThis does not exist in array2";
return false;
}
As you can see up here the two arrays are formatted the same way so this should cause no issues. For some reason unknown to me this loop always returns false, even though I am sure that the value exists in both of the arrays.
答案1
得分: 1
return
结束代码执行。你的 foreach
仅完成了其第一个迭代。如果 0101010
是第一个数组中的第一个项目,它将返回 true。要获取两个数组中都存在的项目,使用 array_intersect
。
$arrayOne = [
'checkThis1' => 1234567,
'checkThis2' => 7654321,
'checkThis3' => 0101010
];
$arrayTwo = [0101010, 9324812];
$intersect = array_intersect(array_values($arrayOne), $arrayTwo);
要检查第二个数组中是否存在任何项目,请检查交集的计数是否大于 0。
$hasAny = (count(array_intersect(array_values($arrayOne), $arrayTwo)) > 0); // true or false
英文:
return
ends code execution. Your foreach
is only completing its first iteration. If 0101010
was the first item in the first array it would return true. To get the items that exist in both arrays use array_intersect
.
$arrayOne = [
'checkThis1' => 1234567,
'checkThis2' => 7654321,
'checkThis3' => 0101010
];
$arrayTwo = [0101010, 9324812];
$intersect = array_intersect(array_values($arrayOne), $arrayTwo);
To check if any of the items exist in the second array check if the count of the intersect is bigger than 0.
$hasAny = (count(array_intersect(array_values($arrayOne), $arrayTwo)) > 0); // true or false
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论