PHP foreach卡在第一个键的值

时间:2012-09-18 13:43:56

标签: php loops foreach

我有一个不同部门的多维数组,并希望使用foreach循环遍历它,但由于某种原因,foreach循环在每次迭代时都会抓取第一个键下的值。

数组如下所示:

$departmentArray = 

Array
(
    [0] => Array
        (
            [dpt_id] => 5
            [dpt_name] => Administration
            [dpt_employees] => Array
                (
                [0] => Array
                    (
                        [started] => 2000-06-01
                        [stopped] => 9999-99-99
                        [empl_id] => 21
                    )

                [1] => Array
                    (
                        [started] => 2000-06-01
                        [stopped] => 2010-01-01
                        [empl_id] => 23
                    )
            )
    )

    [1] => Array
        (
            [dpt_id] => 6
            [dpt_name] => Warehouse
            [dpt_employees] => Array
                (
                [0] => Array
                    (
                        [started] => 2000-10-01
                        [stopped] => 2012-01-01
                        [empl_id] => 30
                    )

                [1] => Array
                    (
                        [started] => 2007-10-17
                        [stopped] => 9999-99-99
                        [empl_id] => 197
                    )
            )
    )
)

foreach循环看起来像这样:

foreach($departmentArray as $key => $value) {

    print_r($key);
    print_r($value['dpt_name']);

}

这打印:

0 Administration 1 Administration. 

有谁知道,为什么循环不会在数组中向前移动并在第二次迭代期间获取键/索引1下的值(Warehouse)?

1 个答案:

答案 0 :(得分:2)

彻底刺入黑暗中:

您之前在$value循环中使用了foreach作为参考,如下所示:

foreach ($foo as &$value) { ... }

foreach ($departmentArray as $key => $value) { ... }

这是一个众所周知的参考副作用。第一次循环后unset($value)