PHPで配列の要素を削除する方法をについて説明します。
今回は、指定した要素を削除するunset関数、array_slice関数に加えて、先頭と末尾をそれぞれ削除するarray_shift関数、array_pop関数について紹介します。
unsetで配列の要素を削除する
1 |
unset($配列[キー] [,$配列[キー]...]) |
unsetを使用することで配列の要素を削除することができます。キーを指定ない場合は、 配列の要素が全て削除されNULLとなります。
また、第2引数に配列を渡すことで同時に複数の要素を削除することができます。
配列の要素を全て削除
配列の要素を全て削除するサンプルコードです。
サンプルコード
1 2 3 4 |
$fruits = array("いちご", "りんご", "ぶどう"); unset($fruits); var_dump($fruits); |
実行結果
1 |
NULL |
実行結果はNULLとなります。
配列のキーを指定して要素を削除
次に「りんご」だけ削除してみます。
サンプルコード
1 2 3 4 |
$fruits = array("いちご", "りんご", "ぶどう"); unset($fruits[1]); var_dump($fruits); |
実行結果
1 2 3 4 5 6 |
array(2) { [0]=> string(9) "いちご" [2]=> string(9) "ぶどう" } |
「りんご」が削除されていますが、キーは歯抜けの状態になります。これを連番にするには、array_values関数を使います。
サンプルコード
1 2 3 4 5 |
$fruits = array("いちご", "りんご", "ぶどう"); unset($fruits[1]); $fruits = array_values($fruits); var_dump($fruits); |
上の例を実行すると以下のようになり、きちんと要素が詰められた状態になります。
1 2 3 4 5 6 |
array(2) { [0]=> string(9) "いちご" [1]=> string(9) "ぶどう" } |
array_splice()で配列の要素を削除する
1 |
array_splice( 配列, 削除開始位置, [, 削除する配列の要素数 [, 置き換える要素 ] ] ) |
array_splice()は配列の中の要素を削除したり、削除後に要素を置き換えたりすることができる関数です。第3引数と第4引数は省略できます。第4引数の置き換える要素はどのような型の要素でも問題ありません。
unset()と大きく異なる点は削除後に配列の要素が自動的に詰められることです。
指定位置移行の要素を削除する
まずは、配列の1番目以降を要素を削除する例です。
1 2 3 |
$fruits = array("いちご", "りんご", "ぶどう", "ばなな"); array_splice($fruits, 1); var_dump($fruits); |
上の実行結果は以下のようになります。
実行結果
1 2 3 4 |
array(1) { [0]=> string(9) "いちご" } |
このように第3引数を指定しない場合はそれ以降の要素はすべて削除されます。
削除した要素を置換する
次は、複数の要素を削除し、削除した要素を「みるく」に置き換える例です。
1 2 3 |
$fruits = array("いちご", "りんご", "ぶどう", "ばなな"); array_splice($stack, 1, 2, "みるく"); var_dump($fruits); |
上の実行結果は以下のようになります。
実行結果
1 2 3 4 5 6 7 8 |
array(3) { [0]=> string(9) "いちご" [1]=> string(9) "みるく" [2]=> string(9) "ばなな" } |
削除された各要素がそれぞれ置換されるのでなくて、削除された要素全体が置換されることに注意してください。また、第3引数が配列の要素より大きい場合は配列の最後まで削除されます。
array_shiftで要素の先頭を削除する
1 |
array_shift ( 配列 ) |
array_shiftは要素の先頭を取り出す関数です。次で説明する要素の末尾を削除するarray_popと同様に要素を取り出すための関数ですが、取り出された要素は削除されるのでそのように使われることも多いです。
サンプルコード
1 2 3 |
$fruits = array("いちご", "りんご", "ぶどう", "ばなな"); array_shift($fruits); var_dump($fruits); |
実行結果
1 2 3 4 5 6 7 8 |
array(3) { [0]=> string(9) "りんご" [1]=> string(9) "ぶどう" [2]=> string(9) "ばなな" } |
array_popで要素の末尾を削除する
1 |
array_pop ( 配列 ) |
array_popは要素の末尾を取り出す関数です。unsetやarray_spliceでも同じことができますが、array_popのほうがよりコードを理解しやすいでしょう。
array_shift, array_popは以下のように、要素を取り出して使うことができます。
サンプルコード
1 2 3 |
$fruits = array("いちご", "りんご", "ぶどう", "ばなな"); $banana = array_pop($fruits); var_dump($banana); |
実行結果
1 |
string(9) "ばなな" |