【问题标题】:Print multidimensional array's end-values with full keys path使用完整的键路径打印多维数组的最终值
【发布时间】:2018-12-17 09:32:13
【问题描述】:

我有多维数组,例如:

$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】:

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

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

【讨论】:

  • 非常感谢!而已。无法执行“路径”部分。
猜你喜欢
  • 1970-01-01
  • 2011-12-04
  • 1970-01-01
  • 2016-04-22
  • 2013-04-22
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 2021-06-11
相关资源
最近更新 更多