PHP foreach在第一个键中的值处卡住

PHP foreach在第一个键中的值处卡住,php,loops,foreach,Php,Loops,Foreach,我有一个由不同部门组成的多维数组,我想使用foreach循环遍历它,但出于某种原因,foreach循环在每次迭代中都会获取第一个键下的值 该数组如下所示: $departmentArray = Array ( [0] => Array ( [dpt_id] => 5 [dpt_name] => Administration [dpt_employees] => Array

我有一个由不同部门组成的多维数组,我想使用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($departmentArray as $key => $value) {

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

}
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($departmentArray as $key => $value) {

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

}
这张照片是:

0 Administration 1 Administration. 

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

完全进入黑暗:

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

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

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

这是参考文献的一个众所周知的副作用<代码>取消设置($value)在第一个循环之后。

否,此代码不会打印该值。如果您自己的代码打印它,那么您正在做一些不同的事情。可能通过引用进行迭代并更改值?谢谢您的回答。你是对的,我在代码前面通过引用进行迭代,在这里我使用相同的名称,我现在将研究它。感谢你在黑暗中的尝试,我认为你是对的,因为我在代码前面通过引用进行迭代。我应该取消设置()花括号内第一个循环中的$value吗?