開発では、オブジェクトの特定のフィールドに値があるかどうかを判断する必要があることがよくありますが、この値は null または未定義である可能性があります。どちらの場合も値がないことを示しますが、それでも異なります。したがって、使用する場合には、実際の状況に応じて異なる処理を行う必要があります。
1. null と未定義の違い
null は、定義されたオブジェクトまたは変数の値が空であることを意味します。割り当てモード。変数に値が割り当てられていないことを示します。 null は、プロパティが正しく割り当てられていないことを示すためにデバッグ コードでも使用できます。したがって、属性値が空かどうかを判断する場合は、=== 演算子を使用します。これは厳密な等価演算子であり、変数のデータ型が同じで値が等しい場合にのみ true を返します。例:
$data = [ 'title' => null, 'content' => '内容', ]; if ($data['title'] === null) { echo '未设置标题'; }
unknown は、変数が宣言されていますが、まだ値が割り当てられていないことを意味します。さらに、unknown には次のような状況があります。
##(1) 変数が存在しません##(2) オブジェクトに特定の属性がありません
##(3) 関数に戻り値がありません確実に判定したい場合 属性が未定義かどうかは isset 関数や empty 関数を使って判定できますが、 isset 関数を使うことを推奨します。例:$class = new stdClass(); if (!isset($class->name)) { echo '未定义属性name'; }2. オブジェクト フィールドが null か未定義かを判断するメソッドオブジェクト フィールドが null か未定義かを判断する場合、isset 関数または array_key_exists 関数を使用して、決定する。具体的な方法は次のとおりです。
isset 関数
$data = [ 'title' => null, 'content' => '内容', ]; if (!isset($data['title'])) { echo '未设置标题'; }
array_key_exists function
$data = [ 'title' => null, 'content' => '内容', ]; if (!array_key_exists('title', $data)) { echo '未设置标题'; }
isset 関数
$class = new stdClass(); if (!isset($class->name)) { echo '未定义属性name'; }
property_exists function
$class = new stdClass(); if (!property_exists($class, 'name')) { echo '未定义属性name'; }
以上がPHP はオブジェクトフィールドが null か未定義かを判断しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。