2

isset($var) == "Test"とはどう違いisset($var) && $var == 'Test"ますか?

4

3 に答える 3

2

最初のものは意味がありません。ご覧のとおりisset、ブール値を返します。だからisset($var) == "Test"私が言ったように、文字列に対してboolを評価します。

評価では、isset($var) && $var == 'Test'PHP は最初に変数 $var が定義されているかどうかをチェックし、次にその値が文字列 'test' と等しいかどうかをチェックします。

設定されていることを確認せずに呼び出す$var == 'Testと、「未定義の変数」通知が発生します。確信が持てず、ノイズの多いログが必要ない場合は、isset で確認できます。

于 2013-02-08T06:50:53.533 に答える
2

ここに短い例があります:

$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() はtrueorfalseを返し、空でない文字列と比較すると がtrue返されるためtrueです。

期待どおりの結果が得られるため、バリアントを使用するisset($var) && $var == "Test"ことをお勧めします。

于 2013-02-08T06:51:55.640 に答える
1

変数が設定されている場合、関数isset()は true (ブール値) を返します。boolean == "Test" を比較すると、偽物です。したがって、変数が設定されていて、値が 'Test' であるかどうかを確認するには、 を使用する必要がありますisset($var) && $var == 'Test'。しかし、`$var == 'Test' を実行してはいけない理由がわかりません。インタープリターは、初期化されていない変数についてそのように文句を言いますか?

isset以下を読んで、関数が実際に 何をするのか理解できない場合は質問してください: http://php.net/manual/en/function.isset.php

于 2013-02-08T06:50:56.140 に答える