定義と使用方法
- PHPバージョン
- 4+
array_shift()関数は、配列の最初の要素を削除します。
特徴
- 元の配列自体を直接変更します。
- この動作によって配列の長さが1つ減ります。
- 削除された要素を返します。
基本の例
$array = ['orange', 'banana', 'apple'];
// 配列の先頭から最初の要素を削除します。
array_shift($array);
print_r($array);
/*
出力:
Array
(
[0] => banana
[1] => apple
)
*/
array_pop()関数はこれと似ていますが、配列の最後の要素を削除します。
構文
array_shift(array &$array): mixed
引数
&$array |
最初の要素を削除する対象となる配列(参照変数)です。 |
|---|
戻り値
array_shift()関数は、配列から削除した最初の要素の値を返します。array_shift()関数で削除する要素が存在せず、配列が空の場合はnullが返されます。
array_shift()関数の返り値
$array = ['orange', 'banana', 'apple'];
// 配列の先頭(最初の値)から1つの要素を削除します。
$removedItem = array_shift($array);
print_r($array);
/*
出力:
Array
(
[0] => banana
[1] => apple
)
*/
echo $removedItem; // 出力: 'orange'
// 配列が空の場合
$empty_array = [];
$empty_array_removed_item = array_shift($empty_array); // 削除する最初の値がなく、配列は空
var_dump($empty_array_removed_item); // 出力: NULL
注意点とさまざまな状況
array_shift()関数を使用する際の重要な概念と注意点がいくつかあります。
- 戻り値
- 元の配列の変更および配列の長さ
- 連想配列でも動作
- キュー(Queue)の実装
unset()で配列の最初の要素を削除する
戻り値
array_shift()関数は削除した要素を返します。返された値は変数に保存できます。
$fruits = ['apple', 'banana', 'cherry'];
$removedFruit = array_shift($fruits);
echo $removedFruit; // 出力: 'apple'
元の配列の変更および配列の長さ
array_shift()関数は元の配列を変更します。そのため、配列から要素を削除すると配列が変更され、配列の長さが減ることを理解しておく必要があります。
$fruits = ['apple', 'banana', 'cherry'];
array_shift($fruits);
echo count($fruits); // 出力: 2
連想配列でも動作
array_shift()関数は、順序付き配列だけでなく連想配列(associative array)にも対応しています。この関数は配列の最初の要素を削除して返すため、配列の種類に制限はありません。
$assocArray = ['name' => 'John', 'age' => 30];
array_shift($assocArray);
print_r($assocArray);
/*
出力:
Array
(
[age] => 30
)
*/
キュー(Queue)の実装
array_shift()関数を使用して配列をキューとして利用できます。配列の最初の要素をキューから削除して処理するのに便利です。
以下の例は、array_shift()関数を使用して配列を処理しながら配列の要素を活用する簡単なキュー(Queue)の実装です。このコードはリクエストを処理する簡単なウェブアプリケーションをシミュレーションする際に使用できます。
// 初期リクエストキューを作成
$requestQueue = [];
// リクエストを追加
$requestQueue[] = 'リクエスト 1';
$requestQueue[] = 'リクエスト 2';
$requestQueue[] = 'リクエスト 3';
// リクエストを処理
while ($request = array_shift($requestQueue)) {
// リクエストを処理
echo "処理中: $request";
// 仮の処理時間を生成
$processingTime = rand(1, 3);
sleep($processingTime); // 仮の処理時間待機
echo "処理完了: $request";
}
// すべてのリクエストが処理されたときに実行されるコード
echo "すべてのリクエスト処理完了";
unset()で配列の最初の要素を削除する
array_shift()関数の代わりに、unset()を使用して配列の最初の要素を削除することができます。unset()は変数の設定を解除(削除)するために使用されます。
$fruits = ['apple', 'banana', 'cherry'];
// 配列の最初の要素を削除
unset($fruits[0]);
// 配列を出力
print_r($fruits);
/*
出力:
Array
(
[1] => banana
[2] => cherry
)
*/
unset()で配列の特定の要素を削除する場合は注意が必要で、推奨されません。配列の最初や最後ではない中間の要素を削除すると、そのインデックスは空のままとなり、再配置されません。