array_splice
(PHP 4, PHP 5, PHP 7)
array_splice — 配列の一部を削除し、他の要素で置換する
説明
array_splice
( array &$array
, int $offset
[, int|null $length
= null
[, mixed $replacement
= []
]] ) : array
配列 array
から offset
および length
で指定された要素を削除し、配列 replacement
でそれを置換します。
注意:
array
の配列の数値添字は保存されないことに注意しましょう。
注意:
replacement
が配列でない場合は、 型変換 を行います (つまり(array) $replacement
とします)。 たとえばreplacement
にオブジェクトやnull
などを指定した場合に、 予期せぬ動きをする可能性があります。
パラメータ
array
入力の配列。
offset
offset
が正の場合、削除される部分は 配列array
の最初から指定オフセットの ぶんだけ進んだ位置からとなります。offset
が負の場合、削除される部分は、array
の末尾から数えた位置からとなります。length
length
が省略された場合、offset
から配列の最後までが全て削除されます。length
が指定され、正の場合、複数の要素が削除されます。負の
length
が指定された場合、削除される部分の末尾の位置は配列の末尾を基準にして計算されます。length
にゼロを指定した場合は、どの要素も削除しません。ヒント
replacement
も指定した場合にoffset
から配列の最後まで全てを削除するには、length
を求めるためにcount($input)
を使用してください。replacement
配列
replacement
が指定された場合、 削除された要素は、この配列の要素で置換されます。offset
およびlength
で何も削除しないと指定した場合、配列replacement
の要素はoffset
で指定された位置に挿入されます。注意:
置換される配列のキーは保存されないことに注意してください。
もし
replacement
に一つしか要素がない場合、 要素そのものが配列やオブジェクトあるいはnull
でない限り、array()
や 角括弧 で括る必要はありません。
返り値
抽出された要素を含む配列を返します。
変更履歴
バージョン | 説明 |
---|---|
8.0.0 | length は、nullable になりました。
|
例
例1 array_splice() の例
<?php$input = array("red", "green", "blue", "yellow");array_splice($input, 2);var_dump($input);$input = array("red", "green", "blue", "yellow");array_splice($input, 1, -1);var_dump($input);$input = array("red", "green", "blue", "yellow");array_splice($input, 1, count($input), "orange");var_dump($input);$input = array("red", "green", "blue", "yellow");array_splice($input, -1, 1, array("black", "maroon"));var_dump($input);?>
上の例の出力は以下となります。
array(2) { [0]=> string(3) "red" [1]=> string(5) "green" } array(2) { [0]=> string(3) "red" [1]=> string(6) "yellow" } array(2) { [0]=> string(3) "red" [1]=> string(6) "orange" } array(5) { [0]=> string(3) "red" [1]=> string(5) "green" [2]=> string(4) "blue" [3]=> string(5) "black" [4]=> string(6) "maroon" }
例2 同じ動きをする、array_splice() の様々な例
以下の文は、すべて2つとも同じ意味です:
<?php// $input に 2 つの要素を追加しますarray_push($input, $x, $y);array_splice($input, count($input), 0, array($x, $y));// $input の最後の要素を削除しますarray_pop($input);array_splice($input, -1);// $input の最初の要素を削除しますarray_shift($input);array_splice($input, 0, 1);// $input の先頭に要素を挿入しますarray_unshift($input, $x, $y);array_splice($input, 0, 0, array($x, $y));// インデックス $x の $input を置き換えます$input[$x] = $y; // キーがオフセットと等価な配列に対してarray_splice($input, $x, 1, $y);?>