使用完整键路径打印多维数组的结束值

问题描述 投票:0回答:1

我有多维数组,例如:

$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

我怎样才能做到这一点?

php arrays
1个回答
2
投票

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

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 
)

Demo on 3v4l.org

© www.soinside.com 2019 - 2024. All rights reserved.