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);
実行結果
実行結果