我对此功能有一些问题(子阵列内的搜索值):
function searchItemsByKey($arr, $looking_key) {
$all_values= array ();
echo "cycling... <br>";
foreach ($arr as $key => $value)
{
if (is_array($arr[$key]))
searchItemsByKey($arr[$key], $looking_key);
else if ($key == $looking_key)
{
echo "find value " . $key . " => " . $value . "<br>";
array_push ($all_values,$value);
}
}
return $all_values;
}
$myvalues = searchItemsByKey($array, 'end');
print_r ($myvalues);
myvalues,是数组null。 我该怎么办?
答案 0 :(得分:0)
替换为
否则if($ value == $ looking_key)
答案 1 :(得分:0)
您最大的问题是,当您搜索子阵列时,您会进行子搜索但忽略结果。所以最多,你只能找到一层深的东西。
该问题的解决方案是,当您查看子数组时,将子搜索的返回值固定为$all_values
。
function searchItemsByKey($arr, $looking_key)
{
$all_values= array();
echo "cycling... <br>";
foreach ($arr as $key => $value)
{
// btw...not much point in `$arr[$key]` here.
// the `$key => $value` means that the value will be put in $value.
if (is_array($value))
{
array_splice($all_values, count($all_values), 0, array_searchItemsByKey($value, $looking_key);
}
else if ($key == $looking_key)
{
echo "find value " . $key . " => " . $value . "<br>";
array_push ($all_values,$value);
}
}
return $all_values;
}
$myvalues = searchItemsByKey($array, 'end');
print_r ($myvalues);