1

さまざまな部門の多次元配列があり、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. 

ループが配列内で前方に移動せず、2回目の反復中にキー/インデックス1の下の値(ウェアハウス)を取得しない理由を誰かが知っていますか?

4

1 に答える 1

2

暗闇への完全な刺し傷:

次のように、以前に参照としてループで使用$valueしたことがあります。foreach

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

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

これは、参照のよく知られた副作用です。unset($value)最初のループの後。

于 2012-09-18T13:50:05.557 に答える