Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】SplQueue::enqueue()メソッドの使い方

enqueueメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

enqueueメソッドは、SplQueueクラスに要素を追加するメソッドです。SplQueueクラスは、PHPの標準ライブラリ(SPL)が提供する、データを効率的に管理するための「キュー(待ち行列)」というデータ構造を実装したクラスです。キューは、最初に追加された要素が最初に処理される(First-In, First-Out: FIFO)という原則に基づいて機能します。

このenqueueメソッドは、SplQueueオブジェクトの末尾に新しい要素を追加する際に使用されます。例えば、ウェブアプリケーションでユーザーからのリクエストを順番に処理したり、メッセージングシステムで送受信するデータを順序立てて格納したりする場面で非常に有用です。メソッドの引数には、キューに追加したい任意のデータ(文字列、数値、オブジェクトなど)を指定できます。これにより、追加された要素はキューの最後尾に配置され、既存の要素の処理順序を乱すことなく、新しいデータが正しく待ち行列に追加されます。このメカニズムは、データが常に決まった順序で処理されることを保証し、システムの安定した運用を支援します。

構文(syntax)

1<?php
2
3$queue = new SplQueue();
4$queue->enqueue("追加する要素");
5
6?>

引数(parameters)

mixed $value

  • mixed $value: キューに追加する値。任意の型を指定できます。

戻り値(return)

戻り値なし

戻り値はありません

サンプルコード

PHP SplQueue enqueue でキューに要素を追加する

1<?php
2
3/**
4 * SplQueue クラスは、PHP の標準ライブラリ (SPL) の一部で、
5 * キュー(Queue)というデータ構造を実装しています。
6 * キューは「先入れ先出し」(FIFO: First-In, First-Out) の原則に従います。
7 */
8$queue = new SplQueue();
9
10echo "--- キューへの要素追加 (enqueue) ---" . PHP_EOL;
11
12/**
13 * enqueue メソッドは、キューの末尾に要素を追加します。
14 * 引数 $value にはどんな型の値でも渡すことができます (mixed $value)。
15 * このメソッドには戻り値がありません。
16 */
17$queue->enqueue("注文ID: 101");
18echo "追加: 注文ID: 101" . PHP_EOL;
19
20$queue->enqueue("注文ID: 102");
21echo "追加: 注文ID: 102" . PHP_EOL;
22
23// 異なる型の値も追加可能です
24$queue->enqueue(42);
25echo "追加: 42" . PHP_EOL;
26
27$queue->enqueue(["ユーザーA", "商品X"]);
28echo "追加: ['ユーザーA', '商品X']" . PHP_EOL;
29
30echo PHP_EOL . "--- 現在のキューの要素数 ---" . PHP_EOL;
31// count() メソッドで現在のキューの要素数を取得できます
32echo "キューの要素数: " . $queue->count() . PHP_EOL;
33
34echo PHP_EOL . "--- キューからの要素取り出し (dequeue) ---" . PHP_EOL;
35
36/**
37 * dequeue メソッドは、キューの先頭から要素を取り出し、その値を返します。
38 * これにより、enqueue された順序で要素が取り出されることを確認できます。
39 */
40while (!$queue->isEmpty()) {
41    $item = $queue->dequeue();
42    // 配列の場合は json_encode で見やすく表示
43    echo "取り出し: " . (is_array($item) ? json_encode($item) : $item) . PHP_EOL;
44}
45
46echo PHP_EOL . "--- キューの要素数 (取り出し後) ---" . PHP_EOL;
47echo "キューの要素数: " . $queue->count() . PHP_EOL; // 全て取り出したので 0 になる

SplQueueクラスは、PHPの標準ライブラリ(SPL)の一部として提供され、データを「先入れ先出し」(FIFO: First-In, First-Out)の原則に基づいて管理するキューというデータ構造を実装しています。

enqueueメソッドは、このSplQueueインスタンスのキューに対して、新しい要素を末尾に追加するために使用されます。引数$valueにはmixed型が指定されており、これは整数や文字列、配列など、PHPで扱えるあらゆる種類の値をキューに追加できることを意味します。このメソッドはキューに要素を追加する操作を行うだけであり、呼び出し元に値を返すことはありません。

提示されたサンプルコードでは、まずSplQueueのオブジェクトを生成し、enqueueメソッドを使って異なる型のデータを複数キューに追加しています。追加されたデータの種類には、文字列や数値、配列が含まれています。その後、countメソッドで現在のキューの要素数を確認し、さらにdequeueメソッドでキューの先頭から要素を一つずつ取り出すことで、enqueueされた順序でデータが処理されるキューの基本的な振る舞いを具体的に示しています。この流れは、キューへのデータ投入と取り出しの順序性を理解するのに役立ちます。

enqueueメソッドは要素をキューに追加しますが、戻り値はありません。そのため、追加の成否をメソッドの返り値で直接確認することはできませんのでご注意ください。引数$valuemixed型であり、文字列、数値、配列などあらゆる型の値を追加できます。しかし、dequeueメソッドで要素を取り出す際には、どのような型の値が返されるか不定です。取り出した値を安全に利用するためには、is_string()is_array()などの関数を使って、事前に型を確認し適切な処理を行うことが重要です。SplQueueは「先入れ先出し (FIFO)」の原則に従うため、enqueueで追加した順序でdequeueで要素が取り出されます。処理の順序性を維持したい場合に非常に役立つデータ構造です。キューに大量の要素を追加し続けると、メモリ使用量が増大する可能性があります。不要になった要素はdequeueで適切に取り出し、メモリを解放するよう意識しましょう。

PHP SplQueue enqueueメソッドで要素を追加する

1<?php
2
3// SplQueue クラスは、PHP の標準ライブラリ (SPL) で提供されるキュー(待ち行列)データ構造です。
4// 要素を一方の端(末尾)に追加し、もう一方の端(先頭)から削除する、FIFO (First-In, First-Out) の原則に基づいています。
5
6// 新しい SplQueue オブジェクトを作成します。
7$queue = new SplQueue();
8
9echo "キューに要素を追加します (enqueue メソッドを使用)。\n";
10
11// enqueue メソッドを使ってキューに要素を追加します。
12// 引数 $value は mixed 型なので、文字列、数値、配列、オブジェクトなど様々な型の値を追加できます。
13
14// 1. 文字列を追加
15$queue->enqueue("タスクA");
16echo "-> 'タスクA' を追加しました。\n";
17
18// 2. 数値を追加
19$queue->enqueue(101);
20echo "-> 101 を追加しました。\n";
21
22// 3. 配列を追加
23$queue->enqueue(["ユーザーID" => 5, "アクション" => "ログイン"]);
24echo "-> ['ユーザーID' => 5, 'アクション' => 'ログイン'] を追加しました。\n";
25
26// 4. オブジェクトを追加
27$process = new stdClass();
28$process->name = "レポート生成";
29$process->status = "待機中";
30$queue->enqueue($process);
31echo "-> stdClass オブジェクト (レポート生成) を追加しました。\n";
32
33echo "\nキューの要素を先頭から取り出します (dequeue メソッドを使用)。\n";
34
35// キューが空になるまで要素を取り出して表示します。
36while (!$queue->isEmpty()) {
37    // dequeue メソッドは、キューの先頭の要素を取り出して返します。
38    $item = $queue->dequeue();
39    
40    echo "<- 取り出し: ";
41    if (is_string($item) || is_numeric($item)) {
42        echo $item;
43    } elseif (is_array($item)) {
44        // 配列の内容を整形して表示
45        echo "[" . implode(", ", array_map(
46            function ($k, $v) { return (is_string($k) ? "'$k' => " : "") . (is_string($v) ? "'$v'" : $v); }, 
47            array_keys($item), 
48            $item
49        )) . "]";
50    } elseif (is_object($item)) {
51        // オブジェクトの主要なプロパティを表示(デモ用)
52        echo "Object { name: " . ($item->name ?? 'N/A') . ", status: " . ($item->status ?? 'N/A') . " }";
53    } else {
54        echo "未知の型";
55    }
56    echo "\n";
57}
58
59echo "\nすべての要素が取り出され、キューは空になりました。\n";
60
61?>

SplQueueは、PHPの標準ライブラリ(SPL)が提供する「キュー(待ち行列)」というデータ構造を扱うクラスです。キューは、最初に入れたものが最初に取り出される、FIFO (First-In, First-Out) の原則に基づいています。

SplQueueクラスのenqueueメソッドは、このキューの末尾に新しい要素を追加するために使用します。引数$valueにはmixed型が指定されており、これは文字列、数値、配列、オブジェクトなど、PHPで扱えるあらゆる種類の値をキューに追加できることを意味します。例えば、このサンプルコードでは、タスク名を表す文字列、IDを表す数値、ユーザー情報を含む配列、そして処理の状態を表すオブジェクトなど、様々な型のデータをキューに追加しています。

このメソッドは、要素を追加する操作のみを行い、直接の戻り値は持ちません。つまり、enqueueを呼び出した結果として、追加された要素自体や、操作の成否を示す値は返されないということです。要素が正常に追加されると、その要素はキューの末尾に格納され、dequeueメソッドが呼び出されるまで待機します。これにより、複数の処理やデータを順序立てて管理する際に役立ちます。

サンプルコードでは、まずSplQueueオブジェクトを作成し、次にenqueueメソッドを使って文字列、数値、配列、オブジェクトを順番にキューに追加しています。その後、dequeueメソッドでキューの先頭から要素を一つずつ取り出し、追加された順序で処理されている様子を示しています。

enqueueメソッドは、PHPのキュー(待ち行列)に要素を追加する際に使用します。引数にmixed型を取るため、文字列、数値、配列、オブジェクトなど、どのような種類のデータでも柔軟に追加できる点が特徴です。しかし、戻り値は提供されないため、追加が成功したかどうかの結果を直接受け取ることはできません。このメソッドで追加された要素は、dequeueメソッドによって追加された順序(先入れ先出し:FIFO)で取り出されます。そのため、取り出す際には要素の型を適切に判定し、安全に処理を進める必要があります。大量の要素を扱う場合、メモリ消費にも注意が必要です。

関連コンテンツ