鉴于我有这种形式的数组:
$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] =>
)
)
)
)
)
)
)
}
答案 0 :(得分:3)
$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
的第三个参数。