isset($var) == "Test"
とはどう違いisset($var) && $var == 'Test"
ますか?
3 に答える
最初のものは意味がありません。ご覧のとおりisset
、ブール値を返します。だからisset($var) == "Test"
私が言ったように、文字列に対してboolを評価します。
評価では、isset($var) && $var == 'Test'
PHP は最初に変数 $var が定義されているかどうかをチェックし、次にその値が文字列 'test' と等しいかどうかをチェックします。
設定されていることを確認せずに呼び出す$var == 'Test
と、「未定義の変数」通知が発生します。確信が持てず、ノイズの多いログが必要ない場合は、isset で確認できます。
ここに短い例があります:
$var = "Chuck Test";
var_dump(isset($var)); // bool(true)
var_dump(isset($undefined)); // bool(false)
var_dump(isset($var) == "Chuck Test"); // bool(true)
var_dump(isset($var) && $var == "Chuck Test"); // bool(true)
var_dump(isset($undefined) == "Chuck Test"); // bool(false)
var_dump(isset($undefined) && $undefined == "Chuck Test"); // bool(false)
それらは同等のように見えますが、そうではありません:
var_dump(isset($var) == "Chuck Testa"); // bool(true) !!!
var_dump(isset($var) && $var == "Chuck Testa"); // bool(false)
isset() はtrue
orfalse
を返し、空でない文字列と比較すると がtrue
返されるためtrue
です。
期待どおりの結果が得られるため、バリアントを使用するisset($var) && $var == "Test"
ことをお勧めします。
変数が設定されている場合、関数isset()
は true (ブール値) を返します。boolean == "Test" を比較すると、偽物です。したがって、変数が設定されていて、値が 'Test' であるかどうかを確認するには、 を使用する必要がありますisset($var) && $var == 'Test'
。しかし、`$var == 'Test' を実行してはいけない理由がわかりません。インタープリターは、初期化されていない変数についてそのように文句を言いますか?
isset
以下を読んで、関数が実際に
何をするのか理解できない場合は質問してください: http://php.net/manual/en/function.isset.php