配列の操作関数
テクノロジ系 / array-basic (添字配列・配列関数・explode/implode)
配列の操作関数
Lesson 4 / Chapter 8
ゴール
配列の 両端 を出し入れする 4 つの関数を使い分けられる。
末尾に追加 array_push 末尾から取り出す array_pop 先頭から取り出す array_shift 先頭に追加 array_unshift
スタック (LIFO) とキュー (FIFO) をこの 4 つで組めるところまで持っていく。
末尾に追加
<?php $stack = [10, 20]; array_push($stack, 30); print_r($stack); // [10, 20, 30]
array_push($arr, X)で末尾に追加$arr[] = Xと同じ動作 (シンタックスシュガー)- どちらを書いても OK
末尾から取り出す
<?php $stack = [10, 20, 30]; $last = array_pop($stack); echo $last . "\n"; // 30 print_r($stack); // [10, 20]
- 末尾の要素が 返り値 で返り、配列からは消える
array_push+array_popの組で スタック (後入れ先出し) になる- Undo 履歴を「直前の操作だけ戻す」用途
先頭から取り出す
<?php $queue = ["a", "b", "c"]; $first = array_shift($queue); echo $first . "\n"; // a print_r($queue); // ["b", "c"]
- 先頭の要素が返り値、配列からは消える
array_push+array_shiftの組で キュー (先入れ先出し) になる- タスクを古い順に処理する用途
先頭に追加
<?php $queue = ["b", "c"]; array_unshift($queue, "a"); print_r($queue); // ["a", "b", "c"]
array_unshift($arr, X)で先頭に追加- 「割り込みタスク」を先頭に入れたいときに使う
末尾は速い・先頭は遅い
array_push / array_pop → 末尾だけ動かす → 速い (O(1)) array_unshift / array_shift → 全要素の添字を振り直す → 遅い (O(N))
- 大量データで先頭操作を繰り返すと じわじわ遅くなる
- まず「末尾操作で済ませられないか」を考える
このチャプターでできるようになること
✅ array_push($arr, X) / array_pop($arr) で末尾を出し入れできる
✅ array_shift($arr) / array_unshift($arr, X) で先頭を出し入れできる
✅ スタック (LIFO) とキュー (FIFO) を組める
✅ 先頭操作が O(N) になることを意識できる
→ ドリルへ
考えてみよう
既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。
ドリル 01 — array_push で末尾追加
問題
配列 [10, 20, 30] に対して array_push で 40 を追加し、print_r で中身を表示してください。
期待される出力:
Array
(
[0] => 10
[1] => 20
[2] => 30
[3] => 40
)採点
php scripts/grade.php topics/array-basic/ch08-array-manipulation/drill/01-push/
ヒント
$nums = [10, 20, 30];array_push($nums, 40);print_r($nums);
ドリル 02 — array_pop で末尾削除
問題
配列 [10, 20, 30, 40] に対して array_pop で末尾を削除し、削除後の中身を print_r で表示してください。
期待される出力:
Array
(
[0] => 10
[1] => 20
[2] => 30
)採点
php scripts/grade.php topics/array-basic/ch08-array-manipulation/drill/02-pop/
ヒント
$nums = [10, 20, 30, 40];array_pop($nums);print_r($nums);
ドリル 03 — array_shift で先頭削除
問題
配列 [10, 20, 30, 40] に対して array_shift で先頭を削除し、削除後の中身を print_r で表示してください。
先頭を削除すると 添字が 0 から振り直される ことに注目してください。
期待される出力:
Array
(
[0] => 20
[1] => 30
[2] => 40
)採点
php scripts/grade.php topics/array-basic/ch08-array-manipulation/drill/03-shift/
ヒント
$nums = [10, 20, 30, 40];array_shift($nums);print_r($nums);