问题是不明确的,因为你没有指定你的输入和预期的输出。
考虑这个例子数组:
$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 2010-10-06 13:29:46
关于样式的说明:不要在全局命名空间中调用变量'temp'或'tmp',**尤其**,这会导致混淆。名称应该是描述性的;称它为“键”,因为它包含了它。 – meagar 2010-10-06 13:31:28