PHP每个循环在数组中更深一层

car*_*rlo 1 php arrays loops nested

我正在尝试遍历一个数组,每次都向另一个数组添加一个新级别.让我举例说明 - 变量$ arr的值每次都不同

$arr = array("1","5","6");
Run Code Online (Sandbox Code Playgroud)

循环

$index[$arr[0]];
Run Code Online (Sandbox Code Playgroud)

循环

$index["1"][$arr[1]]  // "1" since this key was filled in by the previous loop, continuing with a new key
Run Code Online (Sandbox Code Playgroud)

循环

$index["1"]["5"][$arr[2]] // same as previous loop
Run Code Online (Sandbox Code Playgroud)

- 完成所有$ arr的项目,结果是$ index ["1"] ["5"] ["6"] -

问题是我不知道$arr数组包含多少值.然后,我不知道如何继续,例如,$index["1"]当第一个值$arr已经循环到下一个数组级别时(换句话说:添加另一个键).

任何人?

aur*_*ora 7

你可以在这里使用引用:

$a = array("1","5","6");
$b = array();
$c =& $b;

foreach ($a as $k) {
    $c[$k] = array();
    $c     =& $c[$k];
}
Run Code Online (Sandbox Code Playgroud)

输出

Array 
    (
    [1] => Array
        (
            [5] => Array
                (
                    [6] => Array
                        (
                        )
                )
        )
)
Run Code Online (Sandbox Code Playgroud)

要使用其他值覆盖最后一个元素,您只需添加以下行:

$c = 'blubber';
Run Code Online (Sandbox Code Playgroud)

在循环之后,因为$ c是对最深的数组级别的引用,当循环结束时.