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

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

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

作成日: 更新日:

基本的な使い方

pushメソッドは、PHPのSplDoublyLinkedListクラスにおいて、リストの末尾に新しい要素を追加するメソッドです。SplDoublyLinkedListは、要素の追加や削除を効率的に行えるように設計された、双方向にたどれる連結リストのデータ構造です。このpushメソッドを利用することで、リストの最後尾に指定した値を追加し、リストのサイズを拡張することができます。

たとえば、空のリストに最初の要素を追加したり、既存の複数の要素を持つリストの最後にさらに別の要素を加えたりする場合に用います。リストをスタック(後入れ先出しLIFO)として扱う際には、このpushメソッドで要素を積み上げ、popメソッドで末尾から取り出すという形で利用できます。また、キュー(先入れ先出しFIFO)として扱う場合でも、要素をリストの末尾に追加する操作として使われます。

pushメソッドは、追加したい要素の値を引数として受け取ります。実行後には特別な戻り値はありません(void)。システム開発において、動的に変化するデータ群を順序を保って管理したり、一時的なデータを効率的に格納・処理したりする際に、SplDoublyLinkedListとこのpushメソッドが非常に役立ちます。これにより、メモリの利用効率を高めつつ、柔軟なデータ操作を実現できます。

構文(syntax)

1<?php
2$list = new SplDoublyLinkedList();
3$list->push('追加する値');
4?>

引数(parameters)

mixed $value

  • mixed $value: リストの末尾に追加する値

戻り値(return)

戻り値なし

戻り値はありません

サンプルコード

PHP SplDoublyLinkedList push で要素を追加する

1<?php
2
3/**
4 * SplDoublyLinkedList を使用して要素をリストの末尾に追加する例。
5 *
6 * SplDoublyLinkedList は、PHPの標準配列とは異なる「双方向リンクリスト」を実装するクラスです。
7 * push メソッドは、引数として渡された $value をリストの末尾に(最後尾として)追加します。
8 * これは、配列の array_push() や $array[] = $value と同様に、要素を末尾に追加する操作です。
9 * このメソッドには戻り値がありません。
10 */
11function demonstrateSplDoublyLinkedListPush(): void
12{
13    // 新しい SplDoublyLinkedList インスタンスを作成
14    $list = new SplDoublyLinkedList();
15
16    echo "--- 要素追加前のリストの状態 ---" . PHP_EOL;
17    echo "リストの要素数: " . $list->count() . PHP_EOL; // 現在の要素数を表示
18
19    // push メソッドを使用して複数の要素をリストの末尾に追加
20    // 引数 $value は mixed 型なので、様々な型の値を追加できます。
21    $list->push('First item'); // 文字列を追加
22    echo "要素 'First item' をプッシュしました。" . PHP_EOL;
23
24    $list->push(123); // 数値を追加
25    echo "要素 123 をプッシュしました。" . PHP_EOL;
26
27    $list->push(true); // 真偽値を追加
28    echo "要素 true をプッシュしました。" . PHP_EOL;
29
30    echo PHP_EOL . "--- 要素追加後のリストの内容 ---" . PHP_EOL;
31    echo "現在のリストの要素数: " . $list->count() . PHP_EOL;
32
33    // リストの要素を先頭から順にイテレートして表示
34    // foreach ループで SplDoublyLinkedList を反復すると、要素が追加された順に取得されます。
35    $index = 0;
36    foreach ($list as $item) {
37        // 真偽値は echo で直接表示すると空文字列や '1' になるため、明示的に文字列化
38        $displayValue = is_bool($item) ? ($item ? 'true' : 'false') : $item;
39        echo "要素 [" . $index++ . "]: " . $displayValue . PHP_EOL;
40    }
41}
42
43// 関数を実行して動作を確認
44demonstrateSplDoublyLinkedListPush();

SplDoublyLinkedListクラスは、PHPに標準で用意されている配列とは異なる、「双方向リンクリスト」というデータ構造を実装するクラスです。これは、要素が前後に連結されているため、リストの任意の場所への追加や削除を効率的に行える特徴を持ちます。

このSplDoublyLinkedListクラスのpushメソッドは、リストの末尾に新しい要素を追加するために使用されます。引数には$valueとして追加したい値を指定します。この$valuemixed型であるため、文字列、数値、真偽値、オブジェクトなど、どのような型の値でもリストに追加することが可能です。

pushメソッドは、PHPの標準配列におけるarray_push()関数や$array[] = $valueのように、要素をデータ構造の一番後ろに追加する操作と概念的に同じです。引数で渡された値は、常に現在のリストの最終要素の次、つまり一番後ろに追加されます。このメソッド自体には戻り値がありませんので、実行後に何らかの値を返すことはありません。

サンプルコードでは、まず新しいSplDoublyLinkedListのインスタンスを作成しています。その後、pushメソッドを複数回呼び出し、異なる型の要素(文字列、数値、真偽値)をリストの末尾に順次追加しています。要素追加後には、count()メソッドで現在の要素数を確認し、foreachループを使ってリストの要素を先頭から順に表示しています。これにより、pushメソッドが正しく要素をリストの末尾に追加し、追加された順番で要素が格納されていることを確認できます。SplDoublyLinkedListは、特に大規模なデータセットに対して要素の追加・削除を頻繁に行う場合に役立つデータ構造です。

SplDoublyLinkedListは通常のPHP配列とは異なる「双方向リンクリスト」というデータ構造です。pushメソッドは、リストの末尾に要素を追加しますが、戻り値はありません。そのため、要素追加の成否を直接確認することはできません。引数にはmixed型を受け入れるため、文字列や数値、真偽値など、様々な型の値をリストに追加できます。リストの要素はforeachループで簡単に確認できますが、真偽値をechoで直接出力する際は、falseが何も表示されない点にご注意ください。これはPHPにおける一般的な挙動です。

PHP SplDoublyLinkedList::push による通知キュー作成

1<?php
2
3/**
4 * SplDoublyLinkedList を使用して、通知メッセージのキューを作成する例です。
5 * SplDoublyLinkedList::push メソッドは、リストの末尾に要素を追加します。
6 * ここでは、「push通知」の「push」を、通知をキューに追加する操作として関連付けています。
7 */
8
9// 通知メッセージを格納するためのキュー(両方向リスト)を作成します。
10$notificationQueue = new SplDoublyLinkedList();
11
12echo "--- 通知メッセージのキューに要素を追加します ---\n";
13
14// push メソッドを使用して、新しい通知メッセージをキューの末尾に追加します。
15// push メソッドは引数として任意の型の値 (mixed $value) を受け取り、戻り値はありません。
16$notificationQueue->push("ユーザーAが新しい投稿をしました。");
17echo "追加: ユーザーAが新しい投稿をしました。\n";
18
19$notificationQueue->push("システムメンテナンスのお知らせ: 3月15日 2:00-4:00 AM");
20echo "追加: システムメンテナンスのお知らせ: 3月15日 2:00-4:00 AM\n";
21
22$notificationQueue->push("ご注文 #12345 が出荷されました。");
23echo "追加: ご注文 #12345 が出荷されました。\n";
24
25echo "\n--- 現在の通知キューの内容 ---\n";
26
27// キューの要素を順に表示します。
28// SplDoublyLinkedList はイテラブルなので、foreach で簡単にアクセスできます。
29// (通常、通知キューは pop() や shift() で要素を取り出して処理します。)
30if ($notificationQueue->isEmpty()) {
31    echo "通知キューは空です。\n";
32} else {
33    foreach ($notificationQueue as $index => $message) {
34        echo "通知 " . ($index + 1) . ": " . $message . "\n";
35    }
36}
37
38echo "\n--- さらに通知を追加します ---\n";
39$notificationQueue->push("プロモーション情報: 新製品がリリースされました!");
40echo "追加: プロモーション情報: 新製品がリリースされました!\n";
41
42echo "\n--- 更新後の通知キューの内容 ---\n";
43foreach ($notificationQueue as $index => $message) {
44    echo "通知 " . ($index + 1) . ": " . $message . "\n";
45}
46
47?>

PHPのSplDoublyLinkedList::pushメソッドは、両方向リストの末尾に新しい要素を追加するために使用されます。このメソッドは、データが追加された順に処理されるキューのようなデータ構造を構築する際に非常に役立ちます。例えば、ユーザーに送信する「push通知」のようなメッセージを一時的に保存するキューに、新しい通知メッセージを「プッシュ」(追加)していくといった場面で利用されます。

pushメソッドは、mixed $valueという引数を一つ受け取ります。このmixedという指定は、文字列、数値、オブジェクトなど、どのような型のデータでも引数として渡すことができることを意味します。そのため、柔軟に様々な情報をリストに追加することが可能です。メソッドを呼び出した際に、特定の値を返すことはありません(戻り値なし)。リストに要素を追加するという動作のみを実行します。

提供されたサンプルコードでは、SplDoublyLinkedListのインスタンスを通知メッセージのキューとして用意し、pushメソッドを使って「ユーザーAが新しい投稿をしました。」や「システムメンテナンスのお知らせ」といった複数の通知メッセージを、そのキューの末尾に順番に追加しています。これにより、新しい通知が常に既存の通知の最後に追加され、キューが効率的に構築されていく様子を確認できます。このように、pushメソッドはリストの最後にデータを効率よく追加する操作を実現し、システムのイベント処理やタスク管理に活用できます。

SplDoublyLinkedList::pushメソッドは、リストの末尾に要素を追加する操作です。引数$valuemixed型のため任意の値を格納できますが、実際の利用では格納する値の型を揃えるのが一般的です。戻り値がないため、追加成功の直接的な確認はできません。サンプルコードで「push通知」と関連付けていますが、pushメソッドはあくまでリストの末尾追加操作であり、特定の通知システムと直接紐づくものではありません。このメソッドは主にキューへの要素投入(エンキュー)に利用されます。リストの内容確認にforeachを使っていますが、通常のキュー処理ではshiftpopで要素を取り出すのが一般的です。

関連コンテンツ