更改数组搜索功能以返回多个结果

时间:2011-08-16 04:22:21

标签: php multidimensional-array

如果在数组中找到值,我修改了一个搜索数组以返回父项的函数。它适用于返回找到的第一个项目,但我希望它返回找到的所有项目。我认为这是因为我正在立即返回阵列,但我不知道如何改变它以使其“返回”并返回多个发现。

功能:

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;
}

3 个答案:

答案 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;
}