如何使Array Find函数递归

时间:2011-08-03 18:25:42

标签: php search recursion multidimensional-array

我有一个数组解析函数,用于查找值中的部分字匹配。如何使其递归,以便它适用于多维数组?

function array_find($needle, array $haystack)
{
    foreach ($haystack as $key => $value) {
        if (false !== stripos($needle, $value)) {
            return $key;
        }
    }
    return false;
}

数组我需要搜索

array(
 [0] =>
  array(
   ['text'] =>'some text A'
   ['id'] =>'some int 1'
 )
 [1] =>
  array(
   ['text'] =>'some text B'
   ['id'] =>'some int 2'
 )
 [2] =>
  array(
  ['text'] =>'some text C'
  ['id'] =>'some int 3'
 )
 [3] =>
  array(
  ['text'] =>'some text D'
  ['id'] =>'some int 4'
 ) 
etc.. 

3 个答案:

答案 0 :(得分:2)

function array_find($needle, array $haystack)
{
    foreach ($haystack as $key => $value) {
        if (is_array($value)) {
            return $key . '->' . array_find($needle, $value);
        } else if (false !== stripos($needle, $value)) {
            return $key;
        }
    }
    return false;
}

答案 1 :(得分:1)

你想用数组测试重载你的函数......

function array_find($needle, array $haystack)
{
    foreach ($haystack as $key => $value) {
        if (is_array($value)) {
            array_find($needle, $value);
        } else {
            if (false !== stripos($needle, $value)) {
                return $key;
            }
        }
    }
    return false;
}

答案 2 :(得分:0)

这些解决方案并不是我想要的。这可能是错误的功能,因此我创建了另一个以更一般化的方式表达问题的问题。

Search for partial value match in an Array