Вопрос двусмысленный, потому что вы не указали свой ввод и ожидаемый вывод.
Рассмотрите этот пример массива:
$array = [
'first' => [
'second' => [
'third' => 'three',
],
'deuxième' => 'two',
],
];
Все остальные решения до сих пор обеспечивают сглаженное одно-список ключей размерного массива.
$keys = [
'first',
'second',
'third',
'deuxième',
];
Однако мне понадобилась функция array_keys_recursive
, которая бы сохраняла иерархию.
$keys = [
'first' => [
'second' => [
'third',
],
'deuxième',
],
];
Для всех, кто ищет аналогичную потребностьвот мое решение:
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 ?? [];
}