ホームページ >バックエンド開発 >PHPチュートリアル >PHP で変数が空かどうかを判断するいくつかの方法
1. isset関数: 変数が初期化されているかどうかを判定します
注: 変数が空であるかどうかを判定するのではなく、配列内の要素が定義されているかどうかを判定するために使用できます
注: を使用する場合配列要素を決定する isset 初期化されていないかどうかは、array_key_exists の約 4 倍の効率です
コード code を次のようにコピーします。
$a = '';
$a['c' ] = '';
if (!isset($ a)) echo '$a は初期化されていません' . "";
if (!isset($b)) echo '$b は初期化されていません' . if (isset($a['c']) ) echo '$a は初期化されました' . "";
// 表示結果は
// $b は初期化されていません
// $a は初期化されています
2. empty 関数: 変数が「空」かどうかを検出します。「
注: 初期化されていない変数、値が 0 または false の変数、または空の文字列 "" または null、空の配列、または属性のないオブジェクトは empty==true と判断されます 注 1: 初期化されていない変数は、empty によって「空」として検出することもできます。 注 2: empty は変数のみを検出でき、ステートメントは検出できません。 if (empty($a)) echo '$a は空です' . "";
if (empty($b)) echo '$b は空です' . "";
if (empty($c)) echo ' $c is empty' . "";
3. var == null 関数: 変数が「空」かどうかを判定します
注: 値が 0 または false の変数と空の配列、または空の文字列 "" または null は null と判断されます
注: 空との大きな違いは、変数が初期化されていない場合、var == null がレポートされることです。エラー。
次のようにコードをコピーします:
$b = array();if ($a == null) echo '$a is empty' "";if ($b) = = null) echo '$b is empty' . "";
if ($c == null) echo '$b is empty' . "";// 表示結果は
// $a は空です
// 未定義変数: c
4. is_null関数: 変数が"null"かどうかを検出
説明: 変数に"null"の値が代入されている場合、検出結果は true です
注 1: null は大文字と小文字を区別しません: $a = null; $a = NULL 違いはありません
注 2: 変数の値が "null" の場合のみ、検出結果は true、0、空の文字列、false、空の配列はすべてfalseとして検出されます
注3: 変数が初期化されていない場合、プログラムはエラーを報告します
$a = null;$b = false;
if (is_null($a)) echo '$ a は NULL' . "";if (is_null($b)) echo '$b は NULL' . "";
if (is_null($c) )) echo '$c is NULL' . "";
/ / 表示結果は
// $a is NULL
5. var === null 関数:変数は "null"、変数の型も "null" である必要があります
注: 変数に "null" の値が割り当てられ、変数の型も "null" の場合、検出結果は次のようになります。 true
注1:「null」と判定された場合はis_nullと同じ効果になります
注2:変数が初期化されていない場合、プログラムはエラーを報告します
まとめると、「NULL」と「 「空」は PHP の 2 つの概念です。
issetは主に変数が初期化されているかどうかを判断するために使用されます空の値を持つ変数は、「false」、「empty」、「0」、「NULL」、「初期化されていない」と判断できます。 TRUEis_null 値が「NULL」の変数のみをTRUEと判定します
var == nullの値が「false」、「empty」、「0」、「NULL」の変数をTRUEと判定します。var === null. 値が「NULL」である変数のみがTRUEと判断されます
なので、変数が本当に「NULL」であるかどうかを判断する場合は、is_nullを使うことが多いです。 「false」、「0」、その他の値による干渉を避けるため。
-------------------------------------------- --- --------------------------------------------------- --- -
データベースから値を取得した後、それが空であるかどうかを判断します。これは非常に単純に見えますが、実際はそうではありません。 、エラーが報告されます: Notice: Trying to get property of non-object property,
if (isset($obj)) { echo "This var is set set so I will print."; }
这个isset是做什么的呢?
isset函数是检测变量是否设置。
格式:bool isset ( mixed var [, mixed var [, ...]] )
返回值:
若变量不存在则返回 FALSE
若变量存在且其值为NULL,也返回 FALSE
若变量存在且值不为NULL,则返回 TURE
同时检查多个变量时,每个单项都符合上一条要求时才返回 TRUE,否则结果为 FALSE
如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节(”\0″)并不等同于 PHP 的 NULL 常数。
警告: isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined() 函数。
看来刚才我那边的判断所出的问题,就是因为这个“是一个 NULL 字节(”\0″)并不等同于 PHP 的 NULL 常数”。