ホームページ >バックエンド開発 >PHPチュートリアル >PHP 構文で 0 が null と等しくない問題の解決策。

PHP 構文で 0 が null と等しくない問題の解決策。

WBOY
WBOYオリジナル
2016-06-13 12:13:371817ブラウズ

PHP 構文で 0 が null に等しくない問題の解決策

今日、情報収集ページを作成中に奇妙な問題が発生しました。原因を特定するのに時間がかかりました。この問題は確かに少し奇妙です。
(兄は C#、Java、その他の言語をよく使います。私は php をたまに使うだけで、あまり深く勉強していません)。上級 PHP プログラマーの皆さん、笑うのはやめてください。

問題は次のとおりです。PHP ステートメント (0 !=null && 0 >=0) では、返される結果は空です。これは本当に不思議なことです。


実験の概要:
php ステートメントは次のとおりです:

$index=0;

echo "A: ".$ インデックス."
"; //0

エコー "B: ".($ Index != null && $index >=0)."
";//
echo "C: ".( isset($index) && $index >=0)."
";//1

echo " D: ".(0 !=null)."
";//

結果:

A: 0
B:
C : 1
D:
表示: 0!=null の結果は空になります。結果を正しくするには、それを変更します。 $index !=null への変更 isset($index)

if(isset($index) && $index >=0))
{
echo "含まれます。 ";
}else{
echo "含まれません。" ;
}


これは奇妙ですが、ついに解決されました。マーク。

その他の情報:

---------------------- --------------------------------------------------

その理由は、PHP の変数は C 言語の構造体に空の文字列、NULL、および false がすべて値 0 で格納されるためです。この構造体には A メンバーがあります。 zend_uchar type; などの変数は、変数の型を保存するために使用されます。空の文字列の型は string、NULL の型は NULL、false はブール値です。

これを出力するには、echo gettype(''); を使用できます。 === 演算子は値を比較するだけでなく、型も比較するため、3 番目の演算子は false になります。


また、php では

= 等号は代入です

== 2 つの等号は等しいと判断され、型ではなく値のみが比較されます

=== 3 つの等号は値と型が等しいと判断します

!= 符号に等しくない、型に関係なく値のみを比較する

!== 矛盾する記号、比較値、型


つまり、 空の文字列 ('')、false、NULL、0 は値が同じですが、型が異なります。

注:

NULL は特殊な型です。
どちらの場合も NULL
1. $var = NULL;
2. $var;

3.""、0、"0"、NULL、FALSE、array()、var $ var およびオブジェクト。属性がない場合は空とみなされ、var が空の場合は TRUE が返されます。

------------------------------------------ ------ ------------------------


この記事のアドレス:http://blog.csdn.net/aerchi/article/details/42773459

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。