这是我的阵列:
array(1) {
["farm"]=>
array(2) {
["horse"]=>
array(2) {
["horseman"]=>
array(4) {
["fred1"]=>
string(5)"fred1"
["fred2"]=>
string(9) "fred2"
["fred3"]=>
string(19) "fred3"
["fred4"]=>
string(24) "fred4"
}
["cat"]=>
array(1) {
["john"]=>
string(4) "john"
}
}
["folder2"]=>
array(1) {
["cat"]=>
array(2) {
["sam"]=>
string(3) "sam"
["cat"]=>
array(1) {
["john"]=>
string(4) "john"
}
}
}
}
}
在我的数组中,我正在搜索密钥horse
:
$srch = "horse";
function findKey($array, $keySearch){
foreach ($array as $key => $item) {
if (strpos($key, $keySearch) !== false) {
echo "<li>".$key."</li>"";
}
else {
if (is_array($item) && findKey($item, $keySearch)) {
echo "<li>".$key."</li>"";
}
}
}
}
echo findKey($array, $srch);
我的结果是:
但我希望我的结果是:
答案 0 :(得分:2)
比较键和子数组中的搜索是两个独立的步骤
function findKey($array, $keySearch) {
foreach ($array as $key => $item) {
if (strpos($key, $keySearch) !== false)
echo "<li>".$key."</li>";
if (is_array($item))
findKey($item, $keySearch);
}
}