ホームページ >バックエンド開発 >PHPチュートリアル >php empty,isset,is_nullの判定比較(相違点と類似点)_PHPチュートリアル

php empty,isset,is_nullの判定比較(相違点と類似点)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:34:03901ブラウズ

1. 例
A. 変数が定義されていない場合、どのように判断すればよいでしょうか? = isset($test)?"test is undefine!";

$empty=!empty($test)?"テストは定義されています!":"テストは未定義です!"; echo "empty:$emptyrn"; $is_null=is_null($test)?"テストは定義されています!":"テストは未定義です!"; echo "is_null:$is_nullrn";

テスト結果は次のとおりです:



結果は次のとおりです:
empty と isset は、まず変数が存在するかどうかを確認し、次に変数の値を検出します。そして is_null は変数値を直接チェックして null かどうかを確認するだけなので、変数が定義されていない場合はエラーが発生します。



B. それぞれが受け取るパラメータを見てみましょう。


isset関数パラメータ:
php empty,isset,is_nullの判定比較(相違点と類似点)_PHPチュートリアル
$test=100;echo isset($test),isset(100),$isset($b=100);


解析エラー: 解析エラー、予期しない T_LNUMBER、3< 行目の PHPDocument3 に T_STRING または T_VARIABLE または '$' が必要です;/b>

空の関数パラメータ:

$test=100;
エコー空($test)、空(100)、空($b=100);


解析エラー: 解析エラー、予期しない T_LNUMBER、3< 行目の PHPDocument3 に T_STRING または T_VARIABLE または '$' が必要です;/b>

is_null 関数パラメータ:

$test=100;
エコー is_null($test),is_null(100),is_null($b=100);

実行結果: エラーはありません。

比較結果は次のとおりです:

空、isset 入力パラメータは変数 (php 変数は $ 文字で始まる) である必要があり、is_null 入力パラメータには戻り値のみが必要です。 (定数、変数、式など)。 PHP マニュアルでは、空、isset は関数ではなく言語構造であるため、変数関数から呼び出すことができないと分析されています。


2. isset、empty、および is_null の違いの概要:

先ほど紹介しました: 変数とパラメーターの型の確認 これは、これら 3 つの関数の違いの基礎であり、最も見落とされやすいものでもあります。インターネット上でこれら 3 つの機能を比較した記事をたくさん見かけました。これらがカバーされることはほとんどありません。次にお話したいのは、両方が既存の変数をチェックするときの違いです。

例:


コードをコピーします

コードは次のとおりです:

$a=100; $c=null; echo " isset","$a=$a",isset($a)?"define":"undefine","rn";
echo "isset","$b=$b",isset($b) )?" 定義":"定義解除","rn";
エコー "isset","$c=$c",isset($c)?"定義":"定義解除","rn"; b);
echo "isset","$b",isset($b)?"define":"undefine","rn";
echo "rnrn";
echo " empty","$a=$a",!empty($a)?"no empty":"empty","rn";

echo "empty","$b=$b",!empty ($b )?"空なし":"空","rn"; echo "空","$c=$c",!empty($c)?"空なし":"空","rn "; unset($b); echo "empty","$b",!empty($b)?"no empty":"empty","rn"; $b=0;
echo "rnrn ";

//is_null check
echo "is_null","$a=$a",!is_null($a)?"no null":"null","rn";
echo "is_null","$ b=$ b",!is_null($b)?"no null":"null","rn";
echo "is_null","$c=$c",!is_null($c)?"no null ":" null","rn";
unset($b);
echo "is_null","$b",is_null($b)?"no null":"null","rn";


php empty,isset,is_nullの判定比較(相違点と類似点)_PHPチュートリアル
上記の簡単なテストを通じて、変数が存在する場合、isset、empty、is_null の検出、および値の取得を一般的に知ることができます。上記に例示されていない変数がさらにあります。実際、テストでは次のことが判明しました:

empty

変数が空でない値またはゼロ以外の値の場合、empty() は FALSE を返します。つまり、 ""、0、"0"、NULL、FALSE、array()、var $var、unknown; およびプロパティを持たないオブジェクトは空とみなされ、 var が空の場合は TRUE が返されます。

isset

変数が存在する場合(NULLではない)はTRUEを返し、それ以外の場合はFALSE(未定義を含む)を返します。変数値は null に設定され、戻り値も false になります。変数の設定を解除すると、変数はキャンセルされます。 isset は NULL 値変数を特別に処理することに注意してください。

is_null

受信値 [値、変数、式] が null であるかどうかを検出します。変数が 1 つだけ定義されており、その値が null の場合は TRUE を返します。その他の場合は FALSE を返します [未定義の変数が渡されました]。入ってから! 】.


質問: 変数が設定されており、値が NULL であることをどのように判断しますか?

上記の比較を通して、誰もが私と同じようにこの疑問を心に抱くのではないでしょうか。 変数が null かどうかを検出するには、is_null を使用できますが、変数が定義されていない場合はエラーが発生します。したがって、変数が定義されているかどうかを検出するには isset を使用できると考えましたが、変数の値が null の場合は false を返します。ははは、この問題を解決するにはどうすればよいでしょうか。みんなが共有するのを待っています...

変数が存在し、値が NULL であることを確認します。
コードをコピーします コードは次のとおりです:

function checkNull($a)
{
if(array_key_exists($a ,$GLOBALS))
{
グローバル $$a;
if(is_null($$a))
true を返す
}
$test=null;
var_dump(checkNull("test") );
var_dump(checkNull("test1"));


http://www.bkjia.com/PHPjc/322515.html

tru​​ehttp://www.bkjia.com/PHPjc/322515.html技術記事 1. 例 A. 変数が定義されていません。どのように判断すればよいでしょうか? 以下のコードをコピーします: ?php #$test は存在​​しません。変数 $isset= isset($test)?"test is define!": 「私をテストしてください...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。