【问题标题】:How to get list all multidimensional array with parent index如何获取具有父索引的所有多维数组
【发布时间】:2018-03-13 05:34:39
【问题描述】:

如何获取具有父索引的所有多维数组。每个级别的所有索引都是唯一的,我想显示所有级别的列表。

我的数组示例:

 Array(
[1] => Array(
        [2] => Array(
                [3] => 
                [4] => 
                [7] => 
            )
    )

[6] => Array(
        [11] => Array(
                [12] =>  Array(
                         [17] => 
                        )
            )
    )

[2] => Array(
        [13] => Array(
                [14] => 
            )

    )
 )

我想得到这样的输出:

Array
(
 [1]=array([level] = 1)
 [2]=array([level] = 2)
 [3]=array([level] = 3)
 [4]=array([level] = 3)
 [7]=array([level] = 3)
 [6]=array([level] = 1)
 [11]=array([level] = 2)
 [12]=array([level] = 3)
 [17]=array([level] = 4)
 ...
 )

【问题讨论】:

  • @cobolt 我试过但没用,因为我也需要获得关卡。
  • @MuhammadDyasYaskur,这种输出结构[1]=array([level] = 1) 有什么好处?很明显一个item可能只占一层,嵌套数组['level' => ...]是干什么用的?我有一个可行的解决方案,我建议以value: 1, level: 1, 之类的字符串方式或['value'=>1, 'level' => 1], ['value'=>3, 'level' => 3] 之类的二维数组输出
  • 在这个例子中是不可能的。 array[2](1 级)将覆盖array[1][2](2 级)。

标签: php arrays arraylist multidimensional-array


【解决方案1】:

这是使用recursive 函数的解决方案。如果没有更多的子/嵌套数组,假设您的 array 将具有 NULL 值。

$arr = array(1 => array(2 => array(3 => NULL, 
                                       4 => NULL,
                                       7 => NULL )),
             6 => array(11 => array(12 =>  array(17 =>NULL))),
             2 => array(13 => array(14 => NULL)));

$rslt_arr = array();

function traverse_arr($array, $level)
{
    $level++;
    foreach ($array as $key => $value){
        if($value != NULL){
            traverse_arr($value, $level);
        }
        $GLOBALS['rslt_arr'][$key]['level'] = $level;
    }
}

traverse_arr($arr, 0);

echo '<pre>';
print_r($rslt_arr);

输出:

Array
(
    [3] => Array
        (
            [level] => 3
        )

    [4] => Array
        (
            [level] => 3
        )

    [7] => Array
        (
            [level] => 3
        )

    [2] => Array
        (
            [level] => 1
        )

    [1] => Array
        (
            [level] => 1
        )

    [17] => Array
        (
            [level] => 4
        )

    [12] => Array
        (
            [level] => 3
        )

    [11] => Array
        (
            [level] => 2
        )

    [6] => Array
        (
            [level] => 1
        )

    [14] => Array
        (
            [level] => 3
        )

    [13] => Array
        (
            [level] => 2
        )

) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 2019-06-28
    • 2021-11-10
    • 1970-01-01
    • 2012-05-16
    相关资源
    最近更新 更多