PHPでは、次の違いは何ですか。
if($might_not_be_set) doStuff();
と:
if(!empty($might_not_be_set)) doStuff();
前者のアプローチは、未定義の変数通知でApacheログを乱雑にしますが、それを使用しない理由がわかりません-それは何が違うのですか?
PS。私は使いたくありませんisset()
-ブール値として評価することはまさに私が望んでいることです。
empty()は、長さがゼロの文字列またはNULLからTRUEを評価しますが、それより長い文字列(または整数またはブール値)はFALSEになります。したがって、!empty()は、必ずしも必要な値ではなく、そこに何らかの値があることを確認するだけです。
たとえば、文字列1、false、およびtrueのempty()チェックはすべてFALSEと評価され、0の文字列はTRUEと評価されます。
私はあなたが何を使うにしても、あなたが今から6ヶ月後のあなただけであっても、あなたが期待している/期待していないことについて次の人のために痛々しいほど明確にすべきであることを提案します。
詳細な比較は次のとおりです:http: //php.net/manual/en/types.comparisons.php
あなたはそれを自分で言いました:最初の方法は、宣言されていない変数についての警告でログを乱雑にします。どちらの方法も機能的には同等ですが、明示的にすることは決して害にはなりません。!empty()は明示的であり、混乱を避けるため、私は!empty()を使用します。
empty()
変数が空であると見なされるかどうかを判別します。変数が存在しない場合、またはその値がFALSEの場合、変数は空であると見なされます。empty()は、変数が存在しない場合、警告を生成しません。