Pytanie jest niejednoznaczne, ponieważ nie podano danych wejściowych i oczekiwanych wyników.
Rozważmy następujący przykład tablicy:
$array = [
'first' => [
'second' => [
'third' => 'three',
],
'deuxième' => 'two',
],
];
Wszystkie inne rozwiązania dotychczas świadczenia spłaszczoną jednowymiarowy listy tablicy kluczy.
$keys = [
'first',
'second',
'third',
'deuxième',
];
Jednak miałem potrzebę array_keys_recursive
funkcji, które zachowania hierarchii.
$keys = [
'first' => [
'second' => [
'third',
],
'deuxième',
],
];
dla nikogo szukasz podobnej potrzebie, oto moje rozwiązanie:
function array_keys_recursive(array $array) : array
{
foreach ($array as $key => $value) {
if (is_array($value)) {
$index[$key] = array_keys_recursive($value);
} else {
$index []= $key;
}
}
return $index ?? [];
}
Ta rekurencja jest nieskończony w wielu przypadkach. – Svisstack
Uwaga dotycząca stylu: Nie wywołuj zmiennych 'temp' lub' tmp', ** szczególnie ** w globalnej przestrzeni nazw, co prowadzi do nieporozumień. Nazwy powinny być opisowe; nazwij go 'kluczami', ponieważ to jest to, co zawiera. – meagar