2011-02-11 4 views
0

は私のコードです:PHPでは、変数に値がない場合、なぜisset()はTRUEを返すのですか?ここ

<?php 
    $ja = ''; 

    if(isset($ja)) 
    echo "cool!"; 

?> 

私が手に "クール!"この単純なコードをブラウザで実行すると「変数が を設定し、NULLではありませんかどうかを判断

まあ、私のコードでは、私は変数$ JAを宣言しましたが、私はdidnの - 私は

ISSETがあることphp.netから学びましたそれに何か値を加えてくれるので、 "NULL"にしてはいけませんか?

答えて

5

"のように見えますが、それでも値(文字列の最後にNULL文字)があります。

isset()は、変数が設定されているかどうかをチェックします(この場合は '')。あなたは、代わりに空の文字列に設定するのでは、最初に事前にNULLに$ JAを設定したい...またはempty()を使用することができます。)ISSETは、変数が設定されているかどうか指示するために使用され

+0

ありがとうござい役立ちます

希望はどうもありがとうございました:) – xczzhh

3

空の文字列はまだ値です。あなたはでしたはそれがnullでない値を与える - ''は完全に正常な文字列の値です。おそらく望みます! empty($ja)

+0

が答え:) – xczzhh

3

isset($notDefined) //false 
$notDefined = 0; 
isset($notDefined) //true 

あなたは$ JAに値を追加しましたあなたはif(empty($var))またはif($var==0)

+0

は、非常に有用な答えをいただき、ありがとうございます:) – xczzhh

+0

どういたしまして! – JCOC611

+0

PHPの空関数はトリッキーです - 多くの値は "空"とみなされます。あなたのニーズに合っていると確信できない限り、ドキュメントをチェックし、一般的には避けてください。 – Erik

3

を使用することができ、変数が空であるかどうかを確認するには

を($ NOTDEFINEDは前に定義されていないと仮定すると) - あなたは空の文字列を設定します。空の文字列はnullではありません。

あなたが混乱するかもしれないのは、空の文字列とヌルの両方がPHPでBooleanにキャストされたときに "false"と評価されるということです。

PHPのドキュメントは、issetの使用法に関してかなり明確です。

+0

私はMantoに同意します。言語の多くはnull可能な型を持ち、PHPもその1つです。この機能に関する多くのドキュメントがあります。これの例として、null可能な型を持つ言語では、ブール値は{true |偽|ヌル }。 – malavv

+0

ありがとう、私は今それを理解していると思う:) – xczzhh

0

isset関数は、オブジェクトに値があるかどうかを判断します。 "NULL"は、オブジェクトに何もない値を与える唯一の方法です。 $ s = ''は単純に何も出力しません。 BOOLの値(true/false)は、yesまたはnoであることを示します。0はオブジェクトにint値の0を与えます。

-1

名前は関数が暗示しているように、それはある価値を持っているのではなく、ある意味でそれが創造されているということを意味します。私は名前がちょっと混乱するかもしれないと思うので、私はjavascriptの類推をもたらすでしょう。変数は次のない存在するかどうかを確認するにはJavaScriptで:

if (typeof(somevar) == "undefined") 
    alert("Sorry, the variable has not been set already") 
else 
    alert("Congratulations, the variable has not been set") 

だから、何をやっていることは、あなたが変数$jaを作っているということであり、そうすることであるため、変数がすでに存在しているため、設定されています。これは

関連する問題