Вы отменяете ссылку (ломаете ссылку). Вам нужно отменить установку на основе ключа:
foreach ($this->result['list'] as $key => &$row) {
if ($this_row_is_boring) {
unset($this->result['list'][$key]);
}
}
foreach ($this->result['list'] as $key => &$row) {
if ($this_row_is_boring) {
unset($this->result['list'][$key]);
}
}
unset($row);
Помните: если вы используете foreach
со ссылкой, вы должны использовать unset для разыменования, чтобы foreach
не копировал следующий поверх него. Подробнее
Немного пояснения к ответам выше.
После сброса ($ row)
переменная $ row
сбрасывается. Это не означает, что данные в $ row
удалены; в списке также есть элемент, указывающий на $ row
.
Это помогает думать о переменных как о ярлыках. Часть данных может иметь одну или несколько меток, и unset
удаляет эту метку, но не затрагивает фактические данные. Если все метки удалены, данные удаляются автоматически.