Вопрос неоднозначен, потому что вы не указали свой ввод и ожидаемый результат.
Рассмотрим этот пример массива:
$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 ?? [];
}
Эта рекурсия бесконечна во многих случаях. – Svisstack
Примечание о стиле: не вызывайте переменные 'temp' или' tmp', ** особенно ** в глобальном пространстве имен, что приводит к путанице. Имена должны быть описательными; назовите его 'keys', так как это то, что он содержит. – meagar