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

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

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

作成日: 更新日:

基本的な使い方

isEmptyメソッドは、SplDoublyLinkedListオブジェクトが要素を一つも持っていない(空である)かどうかを判定するメソッドです。このメソッドは、PHPの標準ライブラリ(SPL)に含まれるSplDoublyLinkedListという双方向連結リストの現在の状態を確認するために利用されます。具体的には、リストに要素が一つも格納されていない場合にtrue(真)を返し、一つでも要素が格納されている場合にはfalse(偽)を返します。isEmptyメソッドは引数を一切取らず、戻り値として真偽値(boolean)を返します。

システム開発において、リストやコレクションから要素を取り出す処理を行う際、そのリストが空であるかどうかを事前に確認することは非常に重要です。例えば、SplDoublyLinkedListから要素を読み出そうとする前に、このメソッドを使ってリストが空でないことを確認することで、予期せぬエラーの発生を防ぎ、プログラムの安定性を向上させることができます。PHP 8の環境でSplDoublyLinkedListを利用する際に、要素の有無を確実に判断し、適切な処理フローを構築するために不可欠な機能の一つと言えるでしょう。このメソッドにより、リストの状態に応じた安全かつ効率的なプログラミングが可能になります。

構文(syntax)

1<?php
2$list = new SplDoublyLinkedList();
3
4// リストが空かどうかをチェックします
5var_dump($list->isEmpty()); // bool(true)
6
7// リストに要素を追加します
8$list->push("first item");
9$list->push("second item");
10
11// 要素が追加された後、再度リストが空かどうかをチェックします
12var_dump($list->isEmpty()); // bool(false)
13
14// リストから全ての要素を削除します
15$list->pop();
16$list->pop();
17
18// 全ての要素が削除された後、リストが空かどうかをチェックします
19var_dump($list->isEmpty()); // bool(true)
20?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

bool

このメソッドは、リストが空であるかどうかを示す真偽値(bool)を返します。リストに要素が一つも含まれていない場合は true を、一つでも含まれている場合は false を返します。

サンプルコード

PHP SplDoublyLinkedList::isEmpty() でリストの空判定する

1<?php
2
3/**
4 * SplDoublyLinkedList の isEmpty() メソッドの使用例を示します。
5 * このメソッドは、リストが空であるかどうかをチェックします。
6 */
7function demonstrateSplDoublyLinkedListIsEmpty(): void
8{
9    // SplDoublyLinkedList の新しいインスタンスを作成します。
10    $list = new SplDoublyLinkedList();
11
12    echo "--- 初期状態 ---" . PHP_EOL;
13
14    // リストが空かどうかをチェックします。
15    // この時点ではリストに要素がないため、true が返されるはずです。
16    if ($list->isEmpty()) {
17        echo "リストは空です。" . PHP_EOL; // この行が出力される
18    } else {
19        echo "リストは空ではありません。" . PHP_EOL;
20    }
21
22    // リストに要素を追加します。
23    $list->push("PHP");
24    $list->push(8);
25    $list->push("Hello");
26
27    echo PHP_EOL . "--- 要素追加後 ---" . PHP_EOL;
28
29    // 要素を追加したので、再度リストが空かどうかをチェックします。
30    // この時点では要素があるため、false が返されるはずです。
31    if ($list->isEmpty()) {
32        echo "リストは空です。" . PHP_EOL;
33    } else {
34        echo "リストは空ではありません。" . PHP_EOL; // この行が出力される
35    }
36
37    // リストからすべての要素を削除します。
38    // 要素を削除する方法はいくつかありますが、ここでは pop() を使います。
39    while (!$list->isEmpty()) {
40        $list->pop();
41    }
42
43    echo PHP_EOL . "--- 全要素削除後 ---" . PHP_EOL;
44
45    // 全要素を削除したので、再度リストが空かどうかをチェックします。
46    // この時点では要素がないため、true が返されるはずです。
47    if ($list->isEmpty()) {
48        echo "リストは空です。" . PHP_EOL; // この行が出力される
49    } else {
50        echo "リストは空ではありません。" . PHP_EOL;
51    }
52}
53
54// 関数の実行
55demonstrateSplDoublyLinkedListIsEmpty();
56
57?>

PHPのSplDoublyLinkedListは、データの並びを扱うための特別なリスト構造を提供するクラスです。その中に含まれるisEmpty()メソッドは、このリストが現在空であるかどうかを簡単に確認するために使われます。

このメソッドは引数を必要とせず、リストが空の場合にはtrue(真)を、リストに一つでも要素が入っている場合にはfalse(偽)という真偽値(boolean型)を返します。

サンプルコードでは、SplDoublyLinkedListのインスタンスを新しく作成し、isEmpty()メソッドの挙動を段階的に示しています。まず、リストを作成した直後には何も要素がないため、isEmpty()trueを返し、「リストは空です。」と表示されます。次に、いくつかの要素("PHP", 8, "Hello")をリストに追加すると、リストは空ではなくなるため、isEmpty()falseを返し、「リストは空ではありません。」と表示されます。最後に、ループを使ってリストからすべての要素を削除すると、再びリストが空になるため、isEmpty()trueを返し、「リストは空です。」と表示されます。

このように、isEmpty()メソッドを利用することで、リストの現在の状態に応じてプログラムの処理を適切に分岐させることが可能になります。

このisEmpty()メソッドは、PHPの標準ライブラリ(SPL)が提供するSplDoublyLinkedListクラス専用の機能です。一般的な配列の空判定にはempty()関数やcount()関数を使いますが、SplDoublyLinkedListオブジェクトの中身が空であるかを調べる際には、必ず$list->isEmpty()のようにメソッドとして呼び出す必要があります。グローバルなempty()関数をこのリストオブジェクトに対して使うと、オブジェクト自体は存在するため、常に「空ではない」と誤って判断されてしまいます。このメソッドは、リストが空である場合にtrue、要素がある場合にfalseを返すため、条件分岐や、要素がなくなるまで処理を繰り返すループ(例:while (!$list->isEmpty()))で安全かつ直感的に利用できる点が重要です。

SplDoublyLinkedList::isEmpty でリストが空か確認する

1<?php
2
3/**
4 * SplDoublyLinkedList の isEmpty メソッドの使用例を示します。
5 * このメソッドは、リストが空であるかどうかを判定します。
6 */
7function demonstrateSplDoublyLinkedListIsEmpty(): void
8{
9    // 新しい SplDoublyLinkedList のインスタンスを作成します。
10    $list = new SplDoublyLinkedList();
11
12    echo "--- 初期状態 ---\n";
13    // リストが空かどうかを判定し、結果を表示します。
14    // SplDoublyLinkedList::isEmpty() は、リストに要素が含まれていない場合に true を返します。
15    if ($list->isEmpty()) {
16        echo "リストは空です。\n"; // 初期状態では空なので、このメッセージが表示されます。
17    } else {
18        echo "リストは空ではありません。\n";
19    }
20
21    echo "\n--- 要素を追加後 ---\n";
22    // リストに要素を追加します。
23    $list->push('First item');
24    $list->push('Second item');
25
26    // 再度、リストが空かどうかを判定し、結果を表示します。
27    if ($list->isEmpty()) {
28        echo "リストは空です。\n";
29    } else {
30        echo "リストは空ではありません。\n"; // 要素が追加されたので、このメッセージが表示されます。
31    }
32
33    echo "\n--- 全ての要素を削除後 ---\n";
34    // リストから全ての要素を削除します。
35    $list->pop(); // 最後の要素 ('Second item') を削除
36    $list->pop(); // 残りの要素 ('First item') を削除
37
38    // 再度、リストが空かどうかを判定し、結果を表示します。
39    if ($list->isEmpty()) {
40        echo "リストは空です。\n"; // 全ての要素が削除されたので、このメッセージが表示されます。
41    } else {
42        echo "リストは空ではありません。\n";
43    }
44}
45
46// 関数を実行して、SplDoublyLinkedList::isEmpty の動作を確認します。
47demonstrateSplDoublyLinkedListIsEmpty();

PHP 8で利用できるSplDoublyLinkedListは、要素を双方向から効率的に追加・削除できるリスト構造を提供するクラスです。このクラスのisEmptyメソッドは、現在のリスト内に要素が一つも存在せず、空の状態であるかを判定するために使用されます。

このメソッドは引数を一切取りません。戻り値は真偽値(bool)で、リストが空である場合にはtrueを、一つでも要素が含まれている場合にはfalseを返します。

サンプルコードでは、まず新しくSplDoublyLinkedListのインスタンスを作成しています。この初期状態ではリストは空なので、isEmptytrueを返し、「リストは空です。」と表示されます。次に、リストに二つの要素を追加すると、isEmptyfalseを返すようになり、「リストは空ではありません。」と表示されます。その後、popメソッドで全ての要素を削除してリストを空に戻すと、isEmptyは再びtrueを返し、「リストは空です。」というメッセージが表示されることを確認できます。isEmptyメソッドは、リストの現在の状態に基づいてプログラムの処理を適切に分岐させる際に非常に便利です。

SplDoublyLinkedList::isEmpty()メソッドは、その名の通りSplDoublyLinkedListオブジェクトが要素を一つも持たない場合にのみtrueを返します。このメソッドはSplDoublyLinkedList専用であり、文字列や配列といった他のデータ型の空判定には使用できません。

汎用的な空判定には、PHPの組み込み関数であるempty()を使用する必要があります。特に、キーワードにあるような文字列が空であるかを判定したい場合は、empty()関数を使用するのが適切です。isEmpty()empty()は名前が似ていますが、適用対象と機能が異なるため、混同しないように注意してください。SplDoublyLinkedList::isEmpty()は、リストの状態を安全かつ明確に確認するために利用されるもので、特定のデータ構造の状態管理に適しています。

関連コンテンツ