SYNCER

SYNCER

array_splice() - 配列の一部を置換する

公開日:

array_spliceは、配列の一部を切り取り、そこに新しい要素を挿入する関数です。切り取る要素、または挿入する要素のどちらか一方をなしにすれば、単純な削除、または挿入ができます。この関数は元の配列に変更を加えます。

構文

array array_splice ( array &$input , int $offset [, int $length = count($input) [, mixed $replacement = array() ]] )

パラメータ

&$input

対象の配列。

$offset

切り取りを開始する位置までのオフセット。例えば2を指定した場合、3つ目が開始位置となる。負の数を指定した場合は、最後の要素が-1、その1つ前が-2というように末尾から数えた位置となる。

$length

初期値: count ($input)

切り取る要素の数。デフォルトでは、第2引数で指定した位置以降の全ての要素を切り取る。負の数を指定した場合、最後の要素までが-0、その1つ前までが-1というように末尾から数えた位置が最後の切り取り位置となる。

$replacement

初期値: array ()

新しく挿入する要素を一覧にした配列で指定する。配列で指定しなかった場合、内部で配列に型変換される。

返り値

array

切り取った部分の配列。

サンプルコード

配列の一部を置換する

ある配列の2つ目の要素("b")から開始して3つの要素を切り取ります。2つ目の要素を開始位置とするには第1引数に1を指定します。そして、その位置に新しく2つの要素("A""B")を挿入します。

php

<?php
	// 配列
	$queue = [ "a", "b", "c", "d", "e" ] ;

	// 実行
	$result = array_splice( $queue, 1, 3, [ "A", "B" ] ) ;

	// 結果
	print_r( $result ) ;	// 返り値
	echo "\n" ;
	print_r( $queue ) ;	// 実行後の配列

結果 (出力内容) - PHP7.0.21

Array
(
    [0] => b
    [1] => c
    [2] => d
)

Array
(
    [0] => a
    [1] => A
    [2] => B
    [3] => e
)

単純に挿入するだけ

切り取る要素の数を0にすれば、単純にその位置に要素を挿入できます。この例では3つ目の要素の位置に新しく要素を挿入します。

php

<?php
	// 配列
	$queue = [ "a", "b", "e" ] ;

	// 実行
	$result = array_splice( $queue, 2, 0, [ "C", "D" ] ) ;

	// 結果
	print_r( $result ) ;	// 返り値
	echo "\n" ;
	print_r( $queue ) ;	// 実行後の配列

結果 (出力内容) - PHP7.0.21

Array
(
)

Array
(
    [0] => a
    [1] => b
    [2] => C
    [3] => D
    [4] => e
)

単純に削除するだけ

逆に挿入する要素をなくせば、単純に削除することができます。この例では2つ目の要素から開始して3つの要素を削除します。

php

<?php
	// 配列
	$queue = [ "a", "b", "c", "d", "e" ] ;

	// 実行
	$result = array_splice( $queue, 1, 3 ) ;

	// 結果
	print_r( $result ) ;	// 返り値
	echo "\n" ;
	print_r( $queue ) ;	// 実行後の配列

結果 (出力内容) - PHP7.0.21

Array
(
    [0] => b
    [1] => c
    [2] => d
)

Array
(
    [0] => a
    [1] => e
)

サンドボックス

ソースコードを編集してarray_splice()の挙動を確認して下さい。

Array
(
    [0] => b
    [1] => c
)

Array
(
    [0] => a
    [1] => A
    [2] => B
    [3] => d
    [4] => e
)

参考リンク

  • PHP - 公式マニュアル。