我尝试在没有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日我心中发生了一件可怕的事))))
答案 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);
}
}