首页 > 解决方案 > 使用完整的键路径打印多维数组的最终值

问题描述

我有多维数组,例如:

$input = [
    'a' => [
        'b' => 'c', 
        'd' => 'e',
        'f' => [
            'g' => 'h'
        ],
    ],
    'i' => 'j',
    'k' => [
        'l' => 'm'
    ],
];

我需要使用完整的键路径打印所有非数组值。像这样:

a > b > c
a > d > e
a > f > g > h
i > j
k > l > m

我怎样才能做到这一点?

标签: phparrays

解决方案


您需要使用递归函数来遍历数组的级别。这应该会给你想要的结果:

function list_paths($input) {
    $paths = array();
    foreach ($input as $k => $v) {
        if (is_array($v)) {
            foreach (list_paths($v) as $path) {
                $paths[] = $k . " > " . $path;
            }
        }
        else {
            $paths[] = $k . " > " . $v;
        }
    }
    return $paths;
}
print_r(list_paths($input));

输出:

Array ( 
    [0] => a > b > c
    [1] => a > d > e
    [2] => a > f > g > h
    [3] => i > j
    [4] => k > l > m 
)

3v4l.org 上的演示


推荐阅读