PHP递归数组搜索
我使用以下函数递归搜索数组:PHP递归数组搜索,php,recursion,multidimensional-array,Php,Recursion,Multidimensional Array,我使用以下函数递归搜索数组: function search2($array, $key){ if( array_key_exists($key, $array) ){ print("<br> ----------------- FOUND <u>{$key}</u> with value: {$array[$key]}"); return array( $key => $array[$key] );
function search2($array, $key){
if( array_key_exists($key, $array) ){
print("<br> ----------------- FOUND <u>{$key}</u> with value: {$array[$key]}");
return array( $key => $array[$key] );
}else if( !array_key_exists($key, $array) ){
foreach ($array as $index => $subarray){
if( is_array($subarray) ){
print("<br> ************* <u>{$index}</u> is an ARRAY");
print("<br> ************* RE-SEACHING <u>{$index}</u> FOR : <u>{$key}</u>");
search2($subarray, $key);
}
}
}
}
我的函数将不断调用自己,直到找到我正在搜索的索引为止。如果我搜索的是email_address,If语句的第一部分应该返回该索引的值(如果该数组键存在),否则它将在代码的第二部分进入递归模式
问题是代码似乎正常工作,因为我得到了如下所示的“find”打印输出语句:
print("<br> ----------------- FOUND <u>{$key}</u> with value: {$array[$key]}");
print(
--------------找到值为{$array[$key]}的{$key});
但是,我希望return语句能够完成它应该完成的任务,但在函数调用时没有得到任何输出。您必须返回找到的值,因此请更改:
search2($subarray, $key);
致:
使用递归数组内函数:
function in_array_r ( $needle, $haystack, $strict = true )
{
foreach ( $haystack as $value )
{
if (( $strict ? $value === $needle : $value == $needle ) || ( is_array ( $value ) && in_array_r ( $needle, $value, $strict )))
{
return true;
}
}
return false;
}
此函数将继续循环,直到找到您要查找的密钥。您也可以使用提供回调的内置函数。非常感谢。我知道我忽略了一些重要的东西。这个函数只给出一个值。如何获取多个值。我已将return true to替换为return$key。
return search2($subarray, $key);
function in_array_r ( $needle, $haystack, $strict = true )
{
foreach ( $haystack as $value )
{
if (( $strict ? $value === $needle : $value == $needle ) || ( is_array ( $value ) && in_array_r ( $needle, $value, $strict )))
{
return true;
}
}
return false;
}