foreachループ内で参照によって配列にアクセスしていますが、unset()関数が機能していないようです。
foreach ( $this->result['list'] as &$row ) {
if ($this_row_is_boring) {
unset($row);
}
}
print_r($this->result['list']); // Includes rows I thought I unset
アイデア?ありがとう!
参照の設定を解除しています(参照を解除しています)。キーに基づいて設定を解除する必要があります。
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
上に次の参照がコピーされないようにする必要があります。より詳しい情報
上記の答えに対する少しの説明。
unset($row)
変数$row
が設定解除された後。$row
これは、のデータが削除されることを意味するものではありません。リストには、を指す要素もあります$row
。
変数をラベルと考えると役立ちます。データには1つ以上のラベルを付けることができ、unset
そのラベルは削除されますが、実際のデータには影響しません。すべてのラベルが削除されると、データは自動的に削除されます。