如果在数组中找到值,我修改了一个搜索数组以返回父项的函数。它适用于返回找到的第一个项目,但我希望它返回找到的所有项目。我认为这是因为我正在立即返回阵列,但我不知道如何改变它以使其“返回”并返回多个发现。
功能:
function in_array_r($needle, $haystack) {
foreach ($haystack as $item) {
if ($item === $needle || (is_array($item) && in_array_r($needle, $item))) {
return $item;
}
}
return false;
}
答案 0 :(得分:3)
不要立即返回,只需将$ item附加到数组中即可。将return false
替换为return $your_array
(包含您的项目的那个)。因此,$ your_array将包含符合您条件的所有商品。
答案 1 :(得分:0)
是的,一旦从函数返回,执行就完成了。当你已经知道它等于$ needle时,我不确定返回一个任意值的目的是什么。似乎它应该简单地返回true。假设您确实修改了函数以添加存储匹配的$ matches数组。对于您来说,最终得到一个包含3个“foo”元素的数组的值是多少?
答案 2 :(得分:0)
这是我最终修复它的最终代码。感谢您的快速解答:)
function in_array_r($needle, $haystack) {
$array = array();
foreach ($haystack as $item) {
if ($item === $needle || (is_array($item) && in_array_r($needle, $item))) {
array_push($array,$item);
}
}
return $array;
}