Удалить элемент из массива внутри цикла foreach * без *, используя $ key => $ val - PullRequest
1 голос
/ 11 октября 2019

Я работаю в PHP и пытаюсь перебрать массив, а при определенных обстоятельствах удалить конкретный элемент массива.

Я видел несколько похожих на это вопросов, ноответы всегда включают использование $key = $val в foreach. У меня просто есть &$element. Это относительно большой цикл, и для переключения на $key => $value потребуется лот перезаписи и тестирования;так что я надеюсь, что есть способ сделать это с помощью ссылочного элемента. (По сути, в зависимости от значения элемента может произойти множество разных вещей. Удаление - это только одна из многих возможностей.)

Обратите внимание, что я am , используя $ element по ссылке, не ценность. Я бы поклялся, что раньше это работало, но сейчас оно не работает (может, сломалось, когда я перешел с PHP 5 на 7?)

Итак ...

foreach( $things as &$element ) {
    ...
    if( $element == 'hello' ) {
        unset( $element );
    }
    ...
}

Есть ли способзаставить эту работу использовать & $ element?

1 Ответ

3 голосов
/ 11 октября 2019

$value - это просто переменная, которой вы присваиваете значение;произвольное имя. Таким образом, вы можете использовать $key=>$value и вашу ссылку &$element вместе.

foreach ($things as $key => &$element) { /* .. */ }

...