1

次のように、特定の条件が満たされた場合に配列から項目を設定解除する foreach ループがあります。

foreach ($array as $element) {
    if (conditions) {
        unset($element);
    }
}

しかし、その後、要素は設定解除されません。私は何を間違っていますか?実際の要素などへの参照を設定解除していますか?

4

2 に答える 2

8

簡単な解決策、インデックスで要素の設定を解除します。

foreach ($array as $key => $element) {
    if (conditions) {
        unset($array[$key]);
    }
}

$elementこの変数は配列要素への参照ではなくコピーであるため、設定を解除するだけでは機能しません。したがって、 の値を$element変更しても配列は変更されません。

于 2012-01-21T17:53:06.720 に答える
0

別の方法として、次のようにして、参照によって配列要素をループに渡すことができます。

foreach($array as &$var) {
    unset($var);
}

これは、配列要素に直接アクセスして、新しい配列を作成したりキーでアクセスしたりすることなく、必要に応じて変更または削除できるため便利です。$var に加えた変更は、$array の内容に影響します。

于 2013-11-05T21:46:14.550 に答える