2011-08-16 73 views
0

我修改通过阵列搜索如果一个值被在阵列内发现返回父项的功能。它适用于返回找到的第一个项目,但我希望它返回找到的所有项目。我认为这是因为我马上返回阵列,但我不知道如何改变它以使其“返回”并返回多个发现。更改数组搜索函数返回一个以上结果

功能:

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

,而不是返回马上的,只是追加数组中的$项目。更换return falsereturn $your_array(包含您的项目之一)。 $ your_array因此将包含符合您的条件的每件商品。

0

是,一旦你从一个函数返回,执行完成。我不确定当你已经知道它相当于$ needle时,返回一个任意值的目的是什么。似乎它应该简单地返回true。比方说,你没有修改函数添加一个$匹配您存储火柴阵列会的这个值是给你用什么一个数组,曾在其3“foo”的元素来结束?

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; 
} 
相关问题