'array_shift' による削除
CoddyのPHPジャーニー「論理とフロー」セクションの一部 — レッスン 13/68。
array_shift() 関数は、配列から最初の要素を取り除き、その取り除かれた値を返します。これは、配列の先頭に要素を追加する array_unshift() とは逆の動作です。
仕組みは以下の通りです:
<?php
$queue = ["Alice", "Bob", "Charlie"];
$firstPerson = array_shift($queue);
echo $firstPerson; // 出力: Alice
print_r($queue); // 出力: Array ( [0] => Bob [1] => Charlie )
?>array_shift()は、元の配列を変更し、かつ削除された要素を返すことに注意してください。最初の要素を削除した後、残りのすべての要素は自動的にシフトして隙間を埋めます。"Bob"はインデックス1からインデックス0へ、"Charlie"はインデックス2からインデックス1へと移動します。
この再インデックスは自動的に行われ、配列が適切な数値シーケンスを維持することを保証します。空の配列に対して array_shift() を使用すると、エラーを発生させることなく null を返します。
この関数は、キューの実装に特に便利です。キューでは、列に並んでいる顧客の対応や、受信した順序でのタスク処理のように、アイテムを「先入れ先出し(first in, first out)」の順序で処理します。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
チャレンジ
簡単2つの入力を受け取ります。JSON形式の顧客の待機列の初期配列と、サービスを提供する顧客の数を示す数値です。両方の入力を読み込み、JSON文字列を配列に変換し、array_shift() を指定された回数だけ使用して列の先頭からサービス済みの顧客を削除し、最終的な配列を print_r() を使用して出力してください。
入力形式: 2行 - 1行目にはJSON配列(例: ["Alice","Bob","Charlie","Diana"])、2行目にはサービスを提供する顧客の数(数値)が含まれます。
期待される出力: 列の先頭からサービス済みの顧客を削除した後の配列を、print_r() を使用して表示したもの。
チートシート
array_shift() 関数は、配列から最初の要素を取り除き、その取り除かれた値を返します。
<?php
$queue = ["Alice", "Bob", "Charlie"];
$firstPerson = array_shift($queue);
echo $firstPerson; // 出力: Alice
print_r($queue); // 出力: Array ( [0] => Bob [1] => Charlie )
?>主なポイント:
- 元の配列を変更し、取り除かれた要素を返します
- 残りの要素は自動的に再インデックス(前方にシフト)されます
- 空の配列に使用された場合は
nullを返します - 「先入れ先出し(FIFO)」キューの実装に便利です
自分で試してみよう
<?php
// 顧客のJSON配列を読み込む
$jsonInput = fgets(STDIN);
$customers = (array)json_decode($jsonInput, true);
// 対応する顧客の数を読み込む
$numToServe = intval(fgets(STDIN));
// TODO: 以下にコードを記述してください
// array_shift() を使用して、列の先頭から顧客を削除します
// 最終的な配列を出力する
print_r($customers);
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。