PHP の foreach ループで配列要素を削除する
この記事では、PHP の foreach ループで配列要素を削除する方法を示します。
1.使用する unset()
関数
を使用して、配列から要素を簡単に削除できます。 unset() 関数。次のソリューションは、foreach ループを使用して連想配列を反復処理し、指定されたキーに一致する配列要素の設定を解除することによって、その使用法を示しています。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $array = array('key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3'); foreach ($array as $key => $value) { if ($key == 'key2') { unset($array[$key]); } } print_r($array); ?> |
出力:
Array
(
[key1] => value1
[key3] => value3
)
の使用法を示す別の例を次に示します。 unset()
関数。ネストされた foreach ループを使用して配列の配列を反復処理し、指定されたキーと値のペアに一致する配列要素を削除します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php $array = array( array("name"=>"Jason", "age"=>20), array("name"=>"Ben", "age"=>12), array("name"=>"Andy", "age"=>15), ); foreach ($array as $elementKey => $element) { foreach ($element as $key => $value) { if ($key == "name" && $value == "Ben") { unset($array[$elementKey]); } } } print_r($array); ?> |
出力:
Array
(
[0] => Array
(
[name] => Jason
[age] => 20
)
[2] => 配列
(
[名前] => アンディ
[年齢] => 15
)
)
2.使用する array_splice()
関数
または、 array_splice() foreach ループで配列の指定された部分を削除する関数。たとえば、次のコードは、配列の配列から特定の項目を削除します。 array_splice()
関数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php $array = array( array("name"=>"Jason", "age"=>20), array("name"=>"Ben", "age"=>12), array("name"=>"Andy", "age"=>15), ); foreach ($array as $key => $value) { if ($value["name"] == "Ben" && $value["age"] == 12) { array_splice($array, $key, 1); } } print_r($array); ?> |
出力:
Array
(
[0] => Array
(
[name] => Jason
[age] => 20
)
[2] => 配列
(
[名前] => アンディ
[年齢] => 15
)
)
3.使用する array_filter()
関数
PHP 7 より前では、 foreach
ループに内部配列ポインタを使用していたため、ループ内で配列キーが削除された場合に予期しない動作が発生する可能性があります。より良い解決策は、 array_filter()
これにより、後で非決定論的な動作が発生するリスクがなくなります。の array_filter() 以下に示すように、 function はコールバック関数を受け入れ、述語を満たす配列要素を条件付きで削除します。
1 2 3 4 5 6 7 8 9 10 |
<?php $array = array('key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3'); $array = array_filter($array, function($value) use($array) { return $value != $array['key2']; }); print_r($array); ?> |
出力:
Array
(
[key1] => value1
[key3] => value3
)
コールバックのデフォルト パラメータは配列値であることに注意してください。値の代わりにキーをコールバックに渡したい場合は、 ARRAY_FILTER_USE_KEY
オプション。同様に、値とキーの両方をコールバックに渡すには、 ARRAY_FILTER_USE_BOTH
オプション。
PHP の foreach ループで配列要素を削除する方法はこれですべてです。