这是我的阵列:
array(1) {
["farm"]=>
array(2) {
["folder1"]=>
array(2) {
["horse"]=>
array(1) {
["fred"]=>
string(4) "fred"
}
["cat"]=>
array(1) {
["john"]=>
string(4) "john"
}
}
["folder2"]=>
array(1) {
["cat"]=>
array(2) {
["sam"]=>
string(3) "sam"
["cat"]=>
array(1) {
["john"]=>
string(4) "john"
}
}
}
}
}
这是我的功能:
$search = "folder1";
get_values($arr);
function get_values($arr, $id){
global $search;
foreach($arr as $key => $value){
if($key == $search){
if(is_array($value)){
foreach( $value as $k => $v ) {
echo $k;
}
}
}else{
get_values($value, $id );
}
}
}
我的结果:
horse
cat
我不仅需要数组键。我还想打印所有父母(父母,祖父母直到根)键。 结果我需要:
farm/folder1/horse
farm/folder1/cat
我能得到的就是这个。但在这里,我只得到父母而不是盛大和祖父母:
foreach( $value as $k => $v ) {
echo $key."/".$k;
}
结果是
folder1/horse
folder1/cat
答案 0 :(得分:1)
为您的函数添加路径参数。
$search = "folder1";
get_values($arr, null);
function get_values($arr, $path, $id){
global $search;
foreach($arr as $key => $value){
$basePath = $path === null ? $key : $path. "/" . $key;
if($key == $search){
if(is_array($value)){
foreach( $value as $k => $v ) {
echo $basePath . '/' . $k;
}
}
}else{
get_values($value, $basePath, $id);
}
}
}