为什么我的递归数组搜索不能处理这个数据数组?

时间:2011-09-26 06:30:22

标签: php multidimensional-array

我有一个递归数组搜索功能,以前一直在处理。出于某种原因,虽然现在它似乎在告诉我数组中存在的实际上没有的东西。

IE,我有一个像这样的数组

Array
(
[0] => Array
    (
        [name] => people
        [groups] => Array
            (
                [0] => Array
                    (
                        [name] => tom
                    )

                [1] => Array
                    (
                        [name] => john
                    )

            )

    )

)

我的递归搜索功能:

function searchArrayRecursive($needle, $haystack){

  foreach ($haystack as $key => $arr) {

    if(is_array($arr)) {

      $ret=searchArrayRecursive($needle, $arr);

      if($ret!=-1) return $key.','.$ret;

    } else {

      if($arr == $needle) return (string)$key;

    }

  }

  return -1;

} 

如果我要做以下事情:

$search = searchArrayRecursive('kim',$the_array);

if($search != -1) {

  echo 'result: found<br />';

} else {

 echo 'result: not found';

}

我得到结果:找到 它显然不在阵列中。也许我的功能从未奏效。也许我的头向后。任何想法?

注意:当我搜索tom或john o.O时,我也会得到结果:找到

1 个答案:

答案 0 :(得分:0)

此示例按提供的方式工作。可能你的实际数据是混合的情况? ('john'!='John')或者可能是额外的空格或流浪的换行符,因为在创建数组时它们没有被修剪掉?

尝试使用var_dump()而不是print_r()。它应该显示您尝试搜索的数据的确切性质。我怀疑您的数据可能不是您期望的格式。