如何在PHP中将数组元素作为数组?

时间:2016-06-23 17:14:14

标签: php arrays

鉴于我有这种形式的数组:

$x = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h');

如何以下列格式获取?

Array
(
    [h] => Array
        (
            [g] => Array
                (
                    [f] => Array
                        (
                            [e] => Array
                                (
                                    [d] => Array
                                        (
                                            [c] => Array
                                                (
                                                    [b] => Array
                                                        (
                                                            [a] => 
                                                        )

                                                )

                                        )

                                )

                        )

                )

        )

}

2 个答案:

答案 0 :(得分:3)

Like this:

$x = array_reverse($x);
$a = array();
$r =& $a;
foreach($x as $y) {
    $r[$y] = [];
    $r =& $r[$y];
}
print_r($a);

此代码只是为先前创建的数组添加了一个数组。它使用对最后创建的数组的引用来跟踪另一个数组的添加位置。

这有点难以解释,但是阅读PHP中的参考文献,你应该得到它。

答案 1 :(得分:2)

您可以通过array_reduce获取此内容,$y = array_reduce($x, function($acc, $item) { return [$item => $acc]; }, ''); 遍历数组并将reduce函数应用于每个元素:

reduce

鉴于array_reduce操作的性质,您不需要反转数组,因为每个元素都将嵌入前面的数组,从而产生您需要的多级数组。

注意。我认为你想在最后一级获得一个空字符串,但你可以拥有任何你想要的东西。只需使用您需要在最后一级获得的值更新传递给Infragistics的第三个参数。