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

时间:2011-10-21 19:08:49

标签: php arrays loops nested

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

$arr = array("1","5","6");

循环

$index[$arr[0]];

循环

$index["1"][$arr[1]]  // "1" since this key was filled in by the previous loop, continuing with a new key

循环

$index["1"]["5"][$arr[2]] // same as previous loop

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

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

任何?

4 个答案:

答案 0 :(得分:7)

您可以在此处使用参考:

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

foreach ($a as $k) {
    $c[$k] = array();
    $c     =& $c[$k];
}

输出

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

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

$c = 'blubber';

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

答案 1 :(得分:3)

function add_inner_array(&$array, $index) {
    if(isset($array[$index])) return true;
    else {
        $array[$index] = array();
        return true;
    }
}

$a = array(1,5,6);
$index = array();
$pass =& $index;
foreach($a as $k) {
    add_inner_array($pass, $k);
    $pass =& $pass[$k];
}

答案 2 :(得分:0)

你基本上想看看多维数组有多深,对吧?如果是这样,这应该会有所帮助:Is there a way to find out how "deep" a PHP array is?

答案 3 :(得分:0)

我可能错了,但我认为你问这个问题:Multidimensional Arrays Nested to Unlimited Depth