我有一个多维数组:
$array = ["farm"=>
[
"horse"=>
[
"horseman"=>
[
"fred1"=> "fred1",
"fred2"=> "fred2",
"fred3"=>"fred3",
"fred4"=> "fred4"
],
"horseman2"=>
["john"=> "john"]
]
]
];
我在这个数组中搜索特定的键:
function findKey($array, $keySearch) {
foreach ($array as $key => $item) {
$basePath = $basePath === null ? $key : $basePath. "/" . $key;
if (stripos($key, $keySearch) !== false){
echo "<li>Path:".$basePath."</li>";
echo "<li>".$key."</li>";
}
if (is_array($item))
findKey($item, $keySearch);
}
}
findKey($array, 'horse');
我需要的只是&#34;路径&#34;我的结果钥匙。
但我的结果是:
我尝试了很多方法,但我无法实现我所需要的:(
这里有一些例子:
findKey($array, 'horse');
findKey($array, 'horseman');
findKey($array, 'horseman2');
答案 0 :(得分:1)
尝试此功能
在线查看脚本Script。
因为你一次又一次地调用同一个函数,所以你输掉了 值
basepath
。所以每次调用函数时都要传递它。
function findKey($array, $keySearch, $basePath) {
$basePath2 = '';
foreach ($array as $key => $item) {
$basePath = ($basePath == "") ? $key : $basePath. "/" . $key;
if($key == $keySearch){
if(is_array($item)){
foreach($item as $key2 => $value){
$basePath2 = ($basePath2 == "") ? $key : $basePath2. "/" . $key;
echo "<li>Path:".$basePath."</li>";
echo "<li>".$key2."</li>";
}
}
break;
}else{
if(is_array($item)){
foreach($item as $key3 => $value3){
echo "<li>Path:".$basePath."</li>";
echo "<li>".$key3."</li>";
}
}
}
if(is_array($item))
findKey($item, $keySearch, $basePath);
}
}
findKey($array, 'horse', '');
<强>结果强>