我有一个递归数组搜索功能,以前一直在处理。出于某种原因,虽然现在它似乎在告诉我数组中存在的实际上没有的东西。
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时,我也会得到结果:找到
答案 0 :(得分:0)
此示例按提供的方式工作。可能你的实际数据是混合的情况? ('john'!='John')或者可能是额外的空格或流浪的换行符,因为在创建数组时它们没有被修剪掉?
尝试使用var_dump()而不是print_r()。它应该显示您尝试搜索的数据的确切性质。我怀疑您的数据可能不是您期望的格式。