《PHP8上級試験対策》SplStackの基本動作とforeachでの取り出し順序

  • URLをコピーしました!

はじめに

PHPのSPL(Standard PHP Library)には、配列やリンクリストといった基本的なデータ構造をクラスとして利用できる仕組みが用意されています。その中でもSplStackは、後入れ先出し(LIFO)構造を簡単に実装できる便利なクラスです。

PHP8上級試験では、SPLのコレクション系クラスが出題されることがあります。特に foreach を使った走査順序や、SplDoublyLinkedList との継承関係を理解していないと、思わぬ誤答につながる可能性があります。

この記事では、SplStackの基本動作と、試験でも引っかかりやすい foreachでの取り出し順序 について詳しく解説します。

キーワード:PHP8/上級試験/SPL/SplStack/スタック構造/foreach/LIFO/データ構造

目次

SplStack機能の解説

<?php
declare(strict_types=1);
error_reporting(-1);

$stack = new SplStack();
$stack->push(1);
$stack->push('2nd');
$stack->push(333);

foreach ($stack as $v) {
    echo "{$v} ";
}

実行結果

333 2nd 1

解説

SplStackとは?

SplStack は、SPL(Standard PHP Library)で提供される スタック構造(LIFO: Last-In First-Out)を表すクラスです。push() で要素を積み、pop() で最後に積んだ要素から順に取り出します。

push() の動作

コードでは以下の順に push() しています。

  1. 1
  2. '2nd'
  3. 333

内部状態(下が底):

[底] 1 → '2nd' → 333 [頂上]

foreach の挙動に注意

SplStackをforeachで回すと、頂上(最後に push した要素)から順に値が取り出されます。

今回の結果:

333 → '2nd' → 1

これは、配列の foreach異なり、逆順になる点がポイントです。

試験対策ポイント(PHP8上級試験向け)

  • SplStackSplDoublyLinkedList を継承
  • foreach の初期ポインタは末尾(頂上)
  • 型指定はなく、異なる型も混在可能
  • push / pop はLIFO、unshift / shift でFIFO動作も可能

まとめ

  • SplStackLIFO構造を持つクラス
  • foreach は頂上から取り出すため逆順になる
  • PHP8上級試験では、順序やSPLクラスの継承関係が問われやすい

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次