2016-04-13 3 views
1
array(1) { 
    ["farm"]=> 
    array(2) { 
    ["folder1"]=> 
    array(2) { 
     ["horse"]=> 
     array(1) { 
     ["fred.jpg"]=> 
     string(30) "farm/folder1/horse/fred.jpg" 
     } 
     ["cat"]=> 
     array(1) { 
     ["john.jpg"]=> 
     string(28) "farm/folder1/cat/john.jpg" 
     } 
    } 
    ["folder2"]=> 
    array(1) { 
     ["cat"]=> 
     array(2) { 
     ["sam.jpg"]=> 
     string(27) "farm/folder2/cat/sam.jpg" 
     ["cat"]=> 
     array(1) { 
      ["john.jpg"]=> 
      string(32) "farm/folder2/cat/cat/john.jpg" 
     } 
     } 
    } 
    } 
} 

Возможно ли обнаружить только самые внутренние ключи массива?Как определить наиболее внутренние ключи массива многомерного массива?

foreach($array as $key => $value){ 
    if ($key == $most_inner_array) { 
    echo $key; 
    } 
} 

Так что в этом случае результат будет:

fred.jpg 
john.jpg 
sam.jpg 
john.jpg 
+1

Я всегда удивляюсь, почему вы, ребята, хотите делать такие вещи. – Phiter

+0

@PhiterFernandes Почему это необычно для вас? – Jarla

+0

Я не знаю, я просто не представляю сценарий, где это было бы необходимо. Я просто очень любопытный человек. – Phiter

ответ

1

Вы можете пройти через массив рекурсивно и напечатать ключ, если значение не является массивом.

В случае просто распечатывания значения, как в вашем примере, вы можете сделать это только с array_walk_recursive() без каких-либо условий. Что-то вроде:

array_walk_recursive($your_array, function($value, $key) { 
    echo $key . "\n"; 
}); 
+1

Большое спасибо! – Jarla

Смежные вопросы