好久没写 PHP 了,有点儿生疏,看看大概意思就行了: function flatten($nodes, $prefix = '') { $list = []; foreach ($nodes as $key => $value) { if (is_array($value)) { $path = $prefix . $key; $list[] = $path; $list = array_merge($list, flatten($value, $path . '/')); } } return $list; } flatten($config);  * * * 用 RecursiveIteratorIterator 也行,但需要指定第二个参数 `RecursiveIteratorIterator::SELF_FIRST`: $list = []; $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($config), RecursiveIteratorIterator::SELF_FIRST ); foreach ($iterator as $key => $value) { if (is_array($value)) { $path = ''; foreach (range(0, $iterator->getDepth()) as $depth) { $path .= $iterator->getSubIterator($depth)->key() . '/'; } $list[] = rtrim($path, '/'); } } 