PHP变量变量和数组键变量

时间:2016-06-15 12:13:56

标签: php arrays

我尝试在没有IF的情况下创建代码:

if ($lvl == 0) {
    $OutPutArray[0]['follow'][] = $infoArr;
} elseif ($lvl == 1) {
    $OutPutArray[0]['follow'][0]['follow'][] = $infoArr;
} elseif ($lvl == 2) {
    $OutPutArray[0]['follow'][0]['follow'][0]['follow'][] = $infoArr;
}

我希望它是无限的。所以我需要这样的东西:

$prefix="[some_key]...[some_key]"; 
${$prefix}[] = $Array;

我有一些这样的数据:

[0] -id [7] -collectorId

 Array
    (
        [0] => Array
            (
                [0] => 00230000
                [1] => 4501
                [2] => 0002
                [3] => 0003
                [4] => 0004
                [5] => 0005
                [6] => 0006
                [7] => 00000000
            )

        [1] => Array
            (
                [0] => 000x000x
                [1] => 000x
                [2] => 000x
                [3] => 000x
                [4] => 000x
                [5] => 000x
                [6] => 0000
                [7] => 00230000
            )

    )

然后我有功能制作"树阵列"那样:

Array
(
    [0] => Array
        (
            [data] => Array
                (
                    [0] => 00230000
                    [1] => 4501
                    [2] => 0002
                    [3] => 0003
                    [4] => 0004
                    [5] => 0005
                    [6] => 0006
                    [7] => 00000000
                )

            [follow] => Array
                (

                 [0] => Array
                   (
                       [data] => Array
                        (
                           [0] => 000x000x
                           [1] => 000x
                           [2] => 000x
                           [3] => 000x
                           [4] => 000x
                           [5] => 000x
                           [6] => 0000
                           [7] => 00230000
                        )
                       [follow] => Array
                        (
                        )
                   )
             )
        )

)

更新2

所以这是我的数组的错误结构..这里不需要无限嵌套。但也许在某些情况下会需要它。所以我决定不删除我的愚蠢问题。

P.S>

2016年6月15日我心中发生了一件可怕的事))))

1 个答案:

答案 0 :(得分:1)

你不能使用变量来描述数组维度(嗯,实际上你可以,如果你评估字符串,但那是可怕和危险的。)

如果是我,我无法避免这个问题(看起来有点怀疑)那么我会使用递归函数。

function setOuput(&$output, $lvl, $infoArr)
{
    if (!is_array($output)) {
       $output=array('follow'=>array(0=>false));
    } else if (!is_array($output[0]['follow']) {
       $output[0]['follow']=array(0=>false);
    }

    if (!$lvl) {
       $output[0]['follow'][0]=$infoArr;
    } else {
       setOuput($output[0]['follow'][0], $lvl-1, $infoArr);
    }
}