-1

によると :

$ php -a
Interactive shell

php > var_dump("0" != 0); 
bool(false)
php > var_dump(0 != null);
bool(false)
php > var_dump("0" != null);
bool(true)

最後のアサーションが真である理由を説明できますか?

ちなみに、PHPcli5.3.6です。

4

6 に答える 6

5

値が0の文字列であるため、思ったように空ではありません(「0」を含む)

于 2012-04-18T08:42:53.050 に答える
3

それは奇妙ではありません、それは文書化されています

于 2012-04-18T08:45:25.747 に答える
3

"0"nullではありません。文字列です。

""どちらもnullではありません。それは空の文字列です。

于 2012-04-18T08:44:10.407 に答える
1

これは、マニュアルページのPHPタイプ比較表で定義されています。

これらのいくつかは非常に直感的ではないと思います。"0" == falseたとえば、ユーザーが番号を入力するフォームがある場合が多いため、遅延します0。ここで、フィールドが単に.を実行するのではなく、issetを使用して設定されているかどうかを確認する必要がありますif($field)。また、注意してくださいempty("0") == true

その===ため、型チェックされた比較を取得したり、自動型キャストのない言語を使用したりしています。

于 2012-04-18T08:45:21.473 に答える
1

「0」と0はnullではありません。「0」は文字列です。0は整数です。nullは値ではありません。

于 2012-04-18T08:45:22.173 に答える
1
$ php -a
<?php
var_dump("config~123~123" == true);
bool(true)
var_dump("config~123~123" == 0);
bool(true)

同じなので、ロジック!

于 2012-05-07T15:01:13.133 に答える