次のように、特定の条件が満たされた場合に配列から項目を設定解除する foreach ループがあります。
foreach ($array as $element) {
if (conditions) {
unset($element);
}
}
しかし、その後、要素は設定解除されません。私は何を間違っていますか?実際の要素などへの参照を設定解除していますか?
簡単な解決策、インデックスで要素の設定を解除します。
foreach ($array as $key => $element) {
if (conditions) {
unset($array[$key]);
}
}
$element
この変数は配列要素への参照ではなくコピーであるため、設定を解除するだけでは機能しません。したがって、 の値を$element
変更しても配列は変更されません。
別の方法として、次のようにして、参照によって配列要素をループに渡すことができます。
foreach($array as &$var) {
unset($var);
}
これは、配列要素に直接アクセスして、新しい配列を作成したりキーでアクセスしたりすることなく、必要に応じて変更または削除できるため便利です。$var に加えた変更は、$array の内容に影響します。