PHP で開発する場合、堅牢でエラーのないコードを確保するには変数チェックを効果的に処理することが重要です。この目的でよく使用される 2 つの言語構造は、empty() と isset() です。ただし、多くの場合、empty() を選択する方が isset() よりも有利である可能性があります。これは主に、empty() が isset() が実行するほぼすべてのシナリオをカバーし、追加のチェックを行うためです。この記事では、一般的に PHP で一貫して empty() を使用することが良い理由を論じ、複数のコード例でこれを示します。
詳細を掘り下げる前に、これらの言語構造が何を行うのかを明確にしましょう。
isset(): この言語構造は、変数が設定されており、NULL ではないかどうかをチェックします。変数が存在し、その値が NULL でない場合は true を返します。それ以外の場合は false を返します。
$var = 0; echo isset($var); // Outputs: 1 (true)
empty(): この言語構造は、変数が「空」であると見なされるかどうかを決定します。変数が存在しない場合、またはその値が false に等しい場合、その変数は空であるとみなされます。 empty() は、前述の条件に従って変数が空の場合に true を返します。それ以外の場合は false を返します。
$var = 0; echo empty($var); // Outputs: 1 (true)
isset() よりも empty() を使用する主な利点は、複数のチェックを同時に処理できることです。 empty() は、変数が設定されているかどうか、およびその値が空 (""、0、0.0、"0"、null、false、および空の配列) であるかどうかをチェックします。これにより、isset() と値チェックの両方を個別に使用する必要がなくなり、コードの複雑さと潜在的なエラーが軽減されます。
$input = $_POST['data'] ?? ''; // Using isset() if (isset($input) && $input !== '') { echo "Input is set and not empty."; } else { echo "Input is not set or empty."; } // Using empty() if (!empty($input)) { echo "Input is set and not empty/falsy."; } else { echo "Input is not set or empty/falsy."; }
上記の例では、empty() はチェックを 1 つの条件に統合することで簡素化します。
配列、特に存在するかどうかわからないキーを操作する場合、empty() は未定義のインデックスに関する通知を避けるのに特に役立ちます。
$data = ['username' => 'JohnDoe']; // Using isset() if (isset($data['username']) && $data['username'] !== '') { echo "Username is set and not empty."; } else { echo "Username is missing or empty."; } // Using empty() if (!empty($data['username'])) { echo "Username is set and not empty/falsy."; } else { echo "Username is missing or empty/falsy."; }
ブールフラグ、特に設定されていない可能性のあるフラグをチェックする場合、empty() は余分な条件チェックを回避できます。
$options = ['enabled' => false]; // Using isset() if (isset($options['enabled']) && $options['enabled']) { echo "Feature is enabled."; } else { echo "Feature is disabled."; } // Using empty() if (!empty($options['enabled'])) { echo "Feature is enabled."; } else { echo "Feature is disabled."; }
PHP では、empty() を使用すると、変数が設定されているかどうか、および false 以外の値があるかどうかを包括的にチェックするため、多くの場合 isset() より効率的です。これにより、チェックの堅牢性を確保しながら、コードの冗長性と複雑さを軽減する優れたツールになります。ただし、 false、null、および unset 値を区別する場合など、 isset() が必要になる特定のケースもあります。一般に、empty() は、ほとんどのユースケースに対してシンプルで強力な代替手段を提供します。
以上が私が PHP で isset() よりも empty() 言語構造体を使用する理由、そしてあなたもすべき理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。