PHPプログラミング

最終更新日:
公開日:

レシピ

配列

配列の指定した範囲の値を置き換える

array_splice関数を使って、配列の要素を置き換える方法について解説します。

この記事のポイント

  • 配列の指定した要素を置き換える
  • array_splice関数は置き換え以外に要素の追加や削除することもできる

配列の要素を置き換える

array_splice関数を使うと、配列の任意の要素を自由に置き換えることができます。

コード例

$slice_array = array_splice($array, 1, 2,  $replace_array);

4つのパラメータがありますが、前から要素を置き換えたい配列($array)、開始位置(1)、置き換える要素の数(2)、4つ目は置き換える要素($replace_array)の順に指定します。
3つ目の置き換える要素の数と、4つ目の置き換える要素の数は同じである必要はありません。

例えば、次のコード例では配列$arrayの要素「Pomeranian」「Golden retriever」を、$replace_arrayの「Akitaken」「Poodle」「Tosaken」に置き換えます。
また、array_splice関数は返り値として置き換えた要素を返すため、$slice_arrayのように変数に返り値を入れると置き換えた要素を取得することもできます。

コード例

<?php

// 新しい配列
$slice_array = null;

// 配列を用意
$array = array( 'Shibaken', 'Pomeranian', 'Golden retriever', 'Greyhound', 'Siberian husky');

// 置き換える要素を用意
$replace_array = array( 'Akitaken', 'Poodle', 'Tosaken');

// 要素の置き換え実行
$slice_array = array_splice($array, 1, 2,  $replace_array);

// 置き換えた後の配列を出力
var_dump($array);

// 置き換えられた要素を出力
var_dump($slice_array);

置き換えが終わった後の配列を出力すると次のようになります。

$arrayの出力例

array(6) {
	[0]=> string(8) "Shibaken"
	[1]=> string(8) "Akitaken"
	[2]=> string(6) "Poodle"
	[3]=> string(7) "Tosaken"
	[4]=> string(9) "Greyhound"
	[5]=> string(14) "Siberian husky"
}

また、$slice_arrayを出力すると置き換えられた要素を確認することができます。

$slice_arrayの出力例

array(2) {
	[0]=> string(10) "Pomeranian"
	[1]=> string(16) "Golden retriever"
}

array_splice関数の2つ目のパラメータで指定した「1」の位置から、3つ目で指定した「2」の要素を対象に、$replace_arrayの内容へ置き換えられました。

今回は置き換える要素を配列形式で渡していますが、文字列など単一の要素で指定することも可能です。

コード例

<?php

// 新しい配列
$slice_array = null;

// 配列を用意
$array = array( 'Shibaken', 'Pomeranian', 'Golden retriever', 'Greyhound', 'Siberian husky');

// 置き換える要素を用意
$replace = 'Akitaken';

// 要素の置き換え実行
$slice_array = array_splice($array, 1, 2,  $replace);

$arrayの出力例

array(4) {
	[0]=> string(8) "Shibaken"
	[1]=> string(8) "Akitaken"
	[2]=> string(9) "Greyhound"
	[3]=> string(14) "Siberian husky"
}

上記コードでは$replaceに文字列を代入し、単一の要素として配列の要素と置き換えています。

array_splice関数はパラメータの指定次第で置き換えではなく要素の追加や削除といった用途で使うこともできます。
詳しくは下記の記事をご覧ください。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。