PHP如何为多维数组生成数字对?

时间:2015-07-15 15:51:20

标签: php arrays

我想用简单的矩阵构建一个数组。

第一个数字应该代表一个包含一些数据的数组。它应该插入由第二个数字表示的数组中(在行中)。

我尝试了很多循环和数组函数,但我需要帮助。

我该如何制作

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
                   )
                )
        )

)

谢谢。

1 个答案:

答案 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']);

Demo