PHP 構文で 0 が null に等しくない問題の解決策
今日、情報収集ページを作成中に奇妙な問題が発生しました。原因を特定するのに時間がかかりました。この問題は確かに少し奇妙です。
(兄は C#、Java、その他の言語をよく使います。私は php をたまに使うだけで、あまり深く勉強していません)。上級 PHP プログラマーの皆さん、笑うのはやめてください。
問題は次のとおりです。PHP ステートメント (0 !=null && 0 >=0) では、返される結果は空です。これは本当に不思議なことです。
実験の概要:
php ステートメントは次のとおりです:
$index=0;
echo "A: ".$ インデックス."
"; //0
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 では
=
==
===
!=
!==
つまり、 空の文字列 ('')、false、NULL、0 は値が同じですが、型が異なります。
注:
NULL は特殊な型です。3.""、0、"0"、NULL、FALSE、array()、var $ var およびオブジェクト。属性がない場合は空とみなされ、var が空の場合は TRUE が返されます。
------------------------------------------ ------ ------------------------ この記事のアドレス:http://blog.csdn.net/aerchi/article/details/42773459