我想用简单的矩阵构建一个数组。
第一个数字应该代表一个包含一些数据的数组。它应该插入由第二个数字表示的数组中(在行中)。
我尝试了很多循环和数组函数,但我需要帮助。
我该如何制作
1 -> 0
2 -> 0
3 -> 2
4 -> 1
5 -> 4
到
Array
(
[] => Array
(
[id] => 1
[child] => Array
(
[] => Array
(
[id] => 4
[child] => Array
(
[] => Array
(
[id] => 5
)
)
)
)
)
[] => Array
(
[id] => 2
[child] => Array
(
[] => Array
(
[id] => 3
)
)
)
)
谢谢。
答案 0 :(得分:0)
$in = [
1 => 0,
2 => 0,
3 => 2,
4 => 1,
5 => 4];
$arr = ['id' => 0];
$p = [[]];
foreach($in as $key => $val) {
$i = &$arr;
foreach($p[$val] as $step) $i = &$i['child'][$step];
if (!isset($i['child'])) $i['child'] = [];
$i['child'][] = ['id' => $key];
$p[$key] = $p[$val];
$p[$key][] = count($i['child'])-1;
}
此处所有级别都具有相同的结构。但是如果你想要的话就这么做了
print_r($arr['child']);