次のような PHP 条件文を記述する利点はありますか。
if ($variable != NULL) {
対
if (!empty($variable)) {
対
if ($variable) {
それらはすべて同じものではありませんか?変数が存在するかどうかを確認しようとしているだけの場合、最後が常に最も単純なようです。ここで違いを理解するのを手伝ってくれてありがとう。PHP 101 の初日を見逃してしまいました。
次のような PHP 条件文を記述する利点はありますか。
if ($variable != NULL) {
対
if (!empty($variable)) {
対
if ($variable) {
それらはすべて同じものではありませんか?変数が存在するかどうかを確認しようとしているだけの場合、最後が常に最も単純なようです。ここで違いを理解するのを手伝ってくれてありがとう。PHP 101 の初日を見逃してしまいました。
この表をチェックして、PHP 比較演算子のスキニーを取得してください。false、0、""、NULL、および単に定義されていない変数の間には、いくつかの微妙な違いがあります。
厳密なエラー モード (E_STRICT) で実行している場合、句は
if ($variable) {}
と
if ($variable != null) {}
これらの変数が初期化されていない場合、通知がスローされます。
Notice: Undefined variable: variable
uninitialized を使用するとセキュリティ上の脆弱性が生じる可能性があるため、これらの通知はコードに欠陥があることを示しています。(キーワード: register_globals)。
変数の存在をチェックするための私のお気に入りは
if (isset($variable)) {}
これは、変数が以前に使用されたかどうかをチェックします (読み取り: 値で初期化されました!= null)。
私はSeanに同意しますが、それぞれが何をするのかを平易な英語で概説します:
if ($variable != NULL) {
$variable
NULL
未設定の場合となります。これは実質的にisset
変数が未定義であることと同じです。
if (!empty($variable)) {
$variable
通常、これは文字列 ( (string) $variable
) が0 であるかどうかをチェックします。strlen
ただし、0以外の整数や空の配列と同様に、 をtrue
返します。false
何らかの理由で (これは間違っていると思います)$variable = '0';
が返されtrue
ます。
if ($variable) {
この true/false チェックは、(boolean) $variable
基本的に、変数がブール値に変換されたときに true を返すかどうかのように機能します。
これについて考える 1 つの方法は、反対の値を返すことを除いて、空と同じように動作することです。
(boolean) $variable
(タイプ キャスティング/ジャグリング) の意味の詳細については、このマニュアル ページを参照してください。
(PHP 開発者: これは主にメモリによるものです。ここで間違っている場合は訂正してください!)
関連する質問: PHP の弱い型付け: なぜ isset を使用するのですか?
基本的に、空の値、null 値、ゼロ、およびブール値を扱う場合は同じではありません。