【PHP入門】配列から要素を削除してインデックスを振り直す方法
PHPで配列から特定の要素を削除するには unset() 関数を使用します。しかし、unset() は単に要素を取り除くだけなので、残りの要素のインデックス(キー)には欠番が生じたままになります。そこで、array_values() 関数を組み合わせることで、配列のインデックスを0から順に振り直すことができます。
サンプルコード
<?php
$my_arr = array( 'this', 'is', 'a', 'sample', 'only');
echo "元の配列:";
var_dump($my_arr);
unset($my_arr[4]);
echo "削除・振り直し後の配列:";
$my_arr_2 = array_values($my_arr);
var_dump($my_arr_2);
?>
実行結果
元の配列:array(5) {
[0]=>
string(4) "this"
[1]=>
string(2) "is"
[2]=>
string(1) "a"
[3]=>
string(6) "sample"
[4]=>
string(4) "only"
}
削除・振り直し後の配列:array(4) {
[0]=>
string(4) "this"
[1]=>
string(2) "is"
[2]=>
string(1) "a"
[3]=>
string(6) "sample"
}コードの解説
まず、文字列の値を5つ持つ配列が宣言され、var_dump() によって中身が出力されます。次に unset($my_arr[4]) を呼び出すことで、インデックス4の要素「only」が配列から削除されます。
この時点では要素数は4になっていますが、インデックスは [0]〜[3] のままではなく、[0][1][2][3] という形で欠番なく並んでいるわけではない点に注意が必要です。unset() 単体ではインデックスは振り直されないため、ここで array_values() 関数を適用すると、残りの要素に対して0から始まる連続した新しいインデックスが割り当てられます。最後にもう一度 var_dump() で出力し、変更が正しく反映されていることを確認しています。
補足:array_splice() を使う方法
unset() と array_values() を組み合わせる代わりに、array_splice() 関数を使えば、要素の削除とインデックスの振り直しを1回の呼び出しで同時に行うことも可能です。
<?php
$my_arr = array( 'this', 'is', 'a', 'sample', 'only');
array_splice($my_arr, 4, 1); // インデックス4から1件削除
var_dump($my_arr);
?>
用途に応じて両者を使い分けるとよいでしょう。単純にキーを指定して削除したい場合は unset()、位置を指定して削除しつつインデックスも整えたい場合は array_splice() が便利です。
-
PHPで配列の最初の要素を取得する方法をわかりやすく解説
PHPで配列の最初の要素を取得する方法はいくつかあります。ここでは、代表的な手法をサンプルコードとともに紹介します。例1:キーを直接指定して取得する連想配列の場合、先頭のキーがわかっていれば、そのキーを指定するだけで最初の要素にアクセスできます。<?php $arr = array( p=>150, q=>100, r=>120, s=>110, t=>115, u=>103, v=>105, w=>125 ); echo 配列の値 ...\n;
-
C#の配列から要素を削除する方法【サンプルコード付きで解説】
C#の配列は固定長のため、要素を直接「削除」することはできません。そこで一般的に用いられるのが、削除したい位置以降の要素を一つ前へずらす(シフトする)ことで、実質的にその要素を取り除く手法です。 基本的な考え方:要素をシフトして削除する まず、次のように5つの要素を持つ配列を用意します。 int[] arr = new int[5] {35, 50, 55, 77, 98}; たとえば2番目の位置(pos = 2、つまり arr[1])の要素「50」を削除したい場合は、その位置より後ろにある要素をすべて一つずつ前に移動させます。 // 削除位置以降の要素を前方へシフト for (i