問題是不明確的,因爲你沒有指定你的輸入和預期的輸出。
考慮這個例子數組:
$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