ホームページ  >  記事  >  バックエンド開発  >  PHP はさまざまな関数を通じて 0 と空を判定します

PHP はさまざまな関数を通じて 0 と空を判定します

不言
不言オリジナル
2018-06-01 11:32:013165ブラウズ

この記事では、PHP がさまざまな関数を通じて 0 と空をどのように判断するかを主に紹介します。必要な友達にそれを共有します

nullの判定

   $cast_id = 0;
    var_dump(strlen($cast_id));  //1
    var_dump(empty($cast_id)); // true
    var_dump(isset($cast_id)); //true
    var_dump(is_null($cast_id));//false

補足:PHPの構文で0がnullに等しくない問題の解決策を紹介します

今日はこんな問題に遭遇しました。 php ステートメントで、値が 0 以上であるかどうかを判断したいと考えています。($value !=null && $value >=0) を使用すると、返される結果は空です。本当に不思議です。 実験の概要:

phpステートメントは次のとおりです: $value !=null && $value >=0), 返回的结果为空,这点真的好奇怪。

实验总结:

php 语句如下:

    $cast_id = "";
    var_dump(strlen($cast_id));  //0
    var_dump(empty($cast_id)); // true
    var_dump(isset($cast_id)); //true
    var_dump(is_null($cast_id));//false

结果:

$index=0;
echo "A: ".$index."<br>"; //0
echo "B: ".($index !=null && $index >=0)."<br>";//
echo "C: ".(isset($index) && $index >=0)."<br>";//1
echo "D: ".(0 !=null)."<br>";//

要判断一个数值[该数组可能为空等]大于等于0, 可用另外一个方法:  is_numeric($index) === true

A: 0
B: 
C: 1
 D:

这个很奇怪,终于解决了。Mark 一下。

 总结:php的语句稍有些怪异,从其它编程语言转来的同学们一定多加小心谨慎,注意惯性思维及语法差异点啊,避免陷入坑中。

其它资料:

原因是在PHP中变量是以C语言的结构体来存储的,空字符串和NULL,false都是以值为0存储的,其中这个结构体有个zend_uchar type;这样的成员变量,他是用来保存变量的类型的,而空字符串的类型是string,NULL的类型是NULL,false是boolean。

这一点可以用echo gettype('');echo gettype(NULL);

$index=array_search($url, $contentOtherStr, true);
 //值大于等于0, 即存在
if(is_numeric($index) === true)
 {
echo "$url existed. "."<br>";
 }else{
echo "$url Add. "."<br>";
array_push($contentOtherStr, $url);
 }


結果:
rrreee
値[配列が空である可能性があるなど]が0以上であるかどうかを判断するには、別の方法を使用します。 is_numeric($index) === true

rrreee

これは非常に奇妙であり、最終的に解決されました。マーク。

要約: PHP のステートメントは少し奇妙です。他のプログラミング言語から移行した学生は、落とし穴に落ちないように、慣性的思考と文法の違いにさらに注意を払う必要があります。

その他の情報:


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

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

さらに、PHP では、

= 1 つの等号は代入です== 2 つの等号は、等しいかどうかを判断し、型ではなく値のみを比較するために使用されます=== 3 つの等号は、両方の値を決定するために使用されます。型が等しい
!= 等しくない記号、型に関係なく値のみを比較します

!== 等しくない記号、値と型を比較します

So

空の文字列 ('')、false、NULL、0 は等しい値ですでも種類が違う

注:

NULL は特殊な型です。🎜🎜 2 つの場合は NULL です🎜🎜 1. $var = NULL;🎜 2. $var;🎜3.""、0、"0"、NULL 、FALSE 、array()、var $var; および属性のないオブジェクトは、var が空の場合、TRUE が返されます。 🎜🎜🎜関連する推奨事項: 🎜🎜🎜テンプレートへの配列の代入とテンプレートへの extract() 変数の代入を実装するための🎜🎜🎜PHP カスタム関数🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜

以上がPHP はさまざまな関数を通じて 0 と空を判定しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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