Почему array_pop () не работает в foreach l oop? - PullRequest
0 голосов
/ 03 апреля 2020

Почему функция array_pop () не работает в этом случае (в сочетании с foreach l oop)?

    $array=[

    ['1', '2', '3', '4'],

    ['10', '9', '8','7']

    ];

    foreach($array as $a){
    array_pop($a);
    }

Это выводит:

    Array
    (
    [0] => Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
        [3] => 4
    )

    [1] => Array
    (
        [0] => 10
        [1] => 9
        [2] => 8
        [3] => 7
    )

    )

Итак, ничего не происходит. Спасибо.

Ответы [ 2 ]

2 голосов
/ 03 апреля 2020

Поскольку foreach работает с копией массива.

Если вы хотите работать с реальным массивом, вы должны использовать ссылку:

foreach($array as &$a){
    array_pop($a);
}

Вы также можете используйте клавиши для достижения того же:

foreach($array as $k => $a) {
    array_pop($array[$k]);
}
1 голос
/ 03 апреля 2020

Переменная value в foreach является копией, а не ссылкой, поэтому решение будет передать ее по ссылке,

foreach($array as &$a){
    array_pop($a);
}
...