Сбросьте элемент массива в цикле foreach [дубликат]

16
задан LihO 2 November 2013 в 11:27
поделиться

3 ответа

Вы отменяете ссылку (ломаете ссылку). Вам нужно отменить установку на основе ключа:

foreach ($this->result['list'] as $key => &$row) {
    if ($this_row_is_boring) {
        unset($this->result['list'][$key]);
    }
}
32
ответ дан 30 November 2019 в 16:09
поделиться
foreach ($this->result['list'] as $key => &$row) {
    if ($this_row_is_boring) {
        unset($this->result['list'][$key]);
    }
}
unset($row);

Помните: если вы используете foreach со ссылкой, вы должны использовать unset для разыменования, чтобы foreach не копировал следующий поверх него. Подробнее

7
ответ дан 30 November 2019 в 16:09
поделиться

Немного пояснения к ответам выше.

После сброса ($ row) переменная $ row сбрасывается. Это не означает, что данные в $ row удалены; в списке также есть элемент, указывающий на $ row .

Это помогает думать о переменных как о ярлыках. Часть данных может иметь одну или несколько меток, и unset удаляет эту метку, но не затрагивает фактические данные. Если все метки удалены, данные удаляются автоматически.

4
ответ дан 30 November 2019 в 16:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: