ホームページ  >  記事  >  php教程  >  php 空、isset、です

php 空、isset、です

WBOY
WBOYオリジナル
2016-06-21 08:56:161058ブラウズ
1. 例
A. 変数が定義されていない場合、どのように判断すればよいでしょうか?

コードは次のとおりです。次のように:

#$test 変数が存在しません

$isset= isset($test)?"テストは定義です!":"テストは未定義です!" ;
echo "isset:$issetrn";

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

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

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


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

B. それぞれが受け取るパラメータを確認してください。

isset 関数パラメータ:

$test=100;

echo isset($test),isset(100),$isset($b=100);




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

空の関数パラメータ:

$test=100;

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



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

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;

//isset check
echo "isset","$a=$a",isset( $a) ?"define":"undefine","rn";
echo "isset","$b=$b",isset($b)?"define":"undefine","rn";
echo "isset","$c=$c",isset($c)?"define":"undefine","rn";
unset($b); ,"$ b",isset($b)?"define":"undefine","rn";
$b=0;
echo "rnrn";
echo "empty","$a=$a",!empty($a)?"no empty":"empty","rn";
echo "empty","$b=$b ",! empty($b)?"no empty":"empty","rn";
echo "empty","$c=$c",!empty($c)?"no empty": "空" ,"rn";
unset($b);
エコー "空","$b",!empty($b)?"空ではありません":"空","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); ,"$ b",is_null($b)?"no null":"null","rn";



上記の簡単なテストを通じて、変数が存在する場合、isset、empty、is_null の検出、および値の取得を一般的に知ることができます。上記に例示されていない変数がさらにあります。実際、テストでは次のことが判明しました。



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

isset

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

is_null

受信値 [値、変数、式] が null であるかどうかを確認し、その値が null であることを返します。 FALSE [未定義の変数を渡すとエラーが発生します! ].


質問: 変数が設定されており、その値が NULL であるかどうかを確認するにはどうすればよいですか?

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

変数が存在し、値が NULL であることを確認します。

コードをコピーします コードは次のとおりです


function checkNull($a)
{
if(array_key_exists($a,$GLOBALS))
{
global $$a;
if(is_null($$a))
return true;
}
$test=null; ("テスト"));
var_dump(checkNull("test1"));





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