PHP入門 配列関数 配列に複数要素を追加/置換/削除する(array_splice関数)
array_spliceは、配列の任意の場所に要素を追加したり、既存の要素を置換/削除するための関数です。
構文:array_splice関数
array_splice(array &$array , int $offset [, ?int $length[, mixed $replacement]]):array
&$array | 操作対象の配列 |
$offset | 要素の抽出開始位置 |
$length | 取り出す要素数 |
$replacement | 削除箇所に挿入する配列(単一の場合は文字列も可) |
array_pop/array_push関数などと同じく、array_splice関数は引数&$arrayに与えた配列に直接影響を及ぼします。また、元の配列から除去された要素を戻り値として返します。
例:基本
2から4番目の要素を引数$replacementで指定された要素と置き換えます。削除する要素と挿入する要素の数は、必ず一致している必要はありません。戻り値として、置換によって除去された要素を返しています。
<?php
$data = ['山田', '田中', '鈴木','井上','和田'];
print_r(array_splice($data,2,3,['日比野','井田','剛健']));
print_r($data);
例:引数$offset、$lengthに負数を指定
配列の末尾を-1として、そこからさかのぼって数えた位置を、それぞれ開始/終了位置とします。引数$lengthは、配列末尾から残す要素の数を表します。ここでは、3番目の要素を新たな要素で置き換えています。
<?php
$data = ['山田', '田中', '鈴木','井上','和田'];
print_r(array_splice($data,-3,-2,['日比野','井田']));
print_r($data);
例:引数$replacementが省略された場合
array_splice関数は指定された要素を削除します。開始位置($offset)から後方の要素をすべて削除します。
<?php
$data = ['山田', '田中', '鈴木','井上','和田'];
print_r(array_splice($data,3));
print_r($data);
例:要素を挿入
要素を挿入するには、引数$lengthに0を指定します。この場合、1番目から0個の要素を引数$replacementの内容で置き換えなさいという意味になります。結果、1番目の要素の直前に新しい要素が挿入されます。
<?php
$data = ['山田', '田中', '鈴木','井上','和田'];
print_r(array_splice($data,1,0,['花子','伊吹']));
print_r($data);