PHP空値検出関数と方法のまとめ

2401 ワード

ほとんどのエントリのHTTPリクエストでは、isset()empty()のような関数は珍しくありません.以下の試験結果はPHP 7に基づく.16
判定を定義するかどうか:isset()
isset()関数を使用して、変数が定義されているかどうか、配列内の要素が初期化されているかどうか、array_よりも効率的であるかどうかを判断できます.key_exists()は4倍程度高い

$a = 'test';
$b = array('key1' => 'value1');
$class = new stdClass();
var_dump(isset($class->test->test)); //           :   bool(false)
var_dump(isset($a)); //         :   bool(true)
var_dump(isset($c)); //         :   bool(false)
var_dump(isset($b['key1'])); //           :   bool(true)
var_dump(isset($b['key2'])); //           :   bool(false)

空判定かどうか:empty()
Empty()関数は、変数が初期化されていない量であるかどうかを検出します.0,false,空文字列,null,空配列は、empty判定を使用してtrueを返します.

var_dump(empty($c));     //    bool(true)
var_dump(empty($b['key2'])); //    bool(true)
var_dump(empty($class));   //    bool(false)
var_dump($class);       //    object(stdClass)#1 (0) {}
var_dump(empty($class->test->test)); //    bool(true)
class EmptyClass{};
$empty_class = new EmptyClass();
var_dump(empty($empty_class));//    bool(false)

null=$var判断
未定義の変数を判断するとエラーが発生するほか、empty判断と同様に0、false、空の配列などはtrueを返し、実質的に==式は両側の変数を自動的にタイプ変換するので、判断結果はtrueとなる.
is_null判定
単一変数にnullまたはNULLを割り当てた場合、判断結果true、その他の場合falseとなり、変数が定義されていない場合はエラーとなります
null==$var判定
式:===強制型検出では、式の両側の変数の値だけでなく、変数のタイプも検出され、同じである場合にtrueが返されます.
0===$var:0 false===$varであるかどうかを検出する:false null====$varであるかどうかを検出する:===$varであるかどうかを検出する:空の文字列であるかどうかを検出し、任意の文字を含めてfalseを返します.スペース文字など、0==を使用すると、空の文字列、0、false、nullをよく区別することができ、整形や浮動小数点型さえ区別することができます.

$zero_int = 0;
$zero_bool = false;
$zero_double = 0.0;
$zero_null = null;
$zero_str = '';
var_dump(0 === $zero_int);   //    bool(true)
var_dump(0 === $zero_bool);  //    bool(false)
var_dump(0 === $zero_double); //    bool(false)
var_dump(0 === $zero_null);  //    bool(false)
var_dump(0 === $zero_str);   //    bool(false)
var_dump('' === $zero_str);  //    bool(true)
var_dump('' === $zero_int);  //    bool(false)
var_dump('' === $zero_bool);  //    bool(false)
var_dump(0.0 === $zero_double);//    bool(true)
var_dump(0.0 === $zero_int);  //    bool(false)