第5章 組み込み関数 / 第5回 模擬試験
PHPの`array_splice()`関数に関する次の記述のうち、正しいものはどれか。
`array_splice()`は配列の指定した位置の要素を追加・削除・置換でき、元の配列自体を変更する。
正解
`array_splice()`は配列の要素を並べ替える関数である。
`array_splice()`は常に配列全体を削除する関数である。
`array_splice()`は元の配列を変更せず、新しい配列のみを返す関数である。
解説
`array_splice($array, $offset, $length, $replacement)`は、配列の指定した範囲の要素を削除したり、別の要素で置き換えたり、新しい要素を挿入したりできる関数で、`array_slice()`とは異なり「元の配列自体」を直接変更します。
他の選択肢が誤りである理由は次の通りです。
・要素を並べ替える(ソートする)関数は`sort()`, `usort()`などです。`array_splice()`は指定範囲の追加・削除・置換を行う関数です。
・`array_splice()`で配列全体が削除されるのは、範囲指定によってたまたま全要素が対象になった場合のみです。「常に配列全体を削除する」わけではありません。
・`array_splice()`はまさに「元の配列自体を変更する」破壊的な関数です。元の配列を変更せず新しい配列だけを返すのは`array_slice()`の役割です。
例:
```
$arr = ['a', 'b', 'c', 'd'];
array_splice($arr, 1, 2, ['X', 'Y', 'Z']); // 位置1から2個を['X','Y','Z']に置換
print_r($arr); // ['a', 'X', 'Y', 'Z', 'd']
```
(参照: 独習PHP 第4版 第5章 組み込み関数 5.3.6節 array_splice関数 p.197〜198)