array_splice関数とは
array_splice関数
は、配列の任意の場所に要素を追加
したり、既存の要素を置き換え
たり削除
したりといった処理を行う。
array_splice関数の構文
.php
array_splice ( array &$input , int $offset [, int $length = count($input) [, mixed $replacement = array() ]] ) : array
&$input //操作対象の配列
$offset //要素の抽出開始位置
$length //取り出す要素数
$replacement//削除個所に挿入する配列
array_splice関数を使ってみる
daihyou.php
$data = ['本田', '長友', '香川', '長谷部', '遠藤',];
print_r(array_splice($data, 2, 3, ['久保', '中村', '室谷']));
//Array ( [0] => 香川 [1] => 長谷部 [2] => 遠藤 )
print_r($data);
//Array ( [0] => 本田 [1] => 長友 [2] => 久保 [3] => 中村 [4] => 室谷 )
2行目のsplice関数の引数をまとめると下記の表になる。
意味 | ||
---|---|---|
第一引数 | $data | 捜査対象の配列 |
第二引数 | 2(香川) | 要素の抽出開始位置 |
第三引数 | 3(香川、長谷部、遠藤) | 取り出す要素数 |
第四引数 | ['久保', '中村', '室谷'] | 削除個所に挿入する配列 |
2行目のsplice関数は戻り値として置き換えによって除去された要素
を返す。(置き換え後の値ではないので注意)
4行目の$data
をprint_r関数
で出力すると、置き換えられている。
第二、第三引数に負数を指定
splice関数
の第二第三引数に負数を指定することが出来る。
.php
$data = ['本田', '長友', '香川', '長谷部', '遠藤',];
print_r(array_splice($data, -3, -2, ['小川', '権田']));
//Array ( [0] => 香川 )
print_r($data);
//Array ( [0] => 本田 [1] => 長友 [2] => 小川 [3] => 権田 [4] => 長谷部 [5] => 遠藤 )
第二第三引数に負数を指定した場合、配列の末尾を-1
として、そこからさかのぼって数えた位置をそれぞれ開始/終了位置とする。
第三引数は、配列末尾から残す要素の数
を表しているといえる。(2個(長谷部と遠藤)だけ残す)
意味 | ||
---|---|---|
第一引数 | $data | 操作対象の配列 |
第二引数 | -3(香川) | 要素の抽出開始位置 |
第三引数 | -2(香川)「長谷部、遠藤」 | 取り出す要素数(残す要素数) |
第四引数 | ['小川', '権田'] | 削除個所に挿入する配列 |
引数を省略
引数を省略した場合、array_splice関数
は指定された要素を削除する。
.php
$data = ['本田', '長友', '香川', '長谷部', '遠藤',];
print_r(array_splice($data, 3));
//Array ( [0] => 長谷部 [1] => 遠藤 )
print_r($data);
//Array ( [0] => 本田 [1] => 長友 [2] => 香川 )
第三引数に0を指定
第三引数に0を指定すると、arrat_splice関数
は配列に第四引数に指定した値を挿入する。
.php
$data = ['本田', '長友', '香川', '長谷部', '遠藤',];
print_r(array_splice($data, 1,0,['興梠', '宇佐美']));
//Array ( )
print_r($data);
//Array ( [0] => 本田 [1] => 興梠 [2] => 宇佐美 [3] => 長友 [4] => 香川 [5] => 長谷部 [6] => 遠藤 )
上記は厳密にいうと、「2番目から0個の要素を第四引数の内容で置き換えなさい」という意味になる。結果として、2番目の要素の直前に新しい要素が挿入される。
参考
・独習PHP
・PHP公式リファレンス