PHP中没有"未定义"的数据类型.您可以检查正在设置的变量isset,但这无法区分未设置的变量和具有null值的变量:
var_dump(isset($noSuchVariable)); // false
$nullVariable = null;
var_dump(isset($nullVariable)); // also false
Run Code Online (Sandbox Code Playgroud)
但是,您可以使用一个技巧compact,允许您确定是否已定义变量,即使其值为null:
var_dump(!!compact('noSuchVariable')); // false
var_dump(!!compact('nullVariable')); // true
Run Code Online (Sandbox Code Playgroud)
实例.
无论isset和compact技巧也为多个变量同时工作(用逗号分隔的列表).
null处理数组键时,您可以轻松区分值和完全不存在:
$array = array('nullKey' => null);
var_dump(isset($array['nullKey'])); // false
var_dump(array_key_exists($array, 'nullKey')); // true
Run Code Online (Sandbox Code Playgroud)
实例.
在处理对象属性时,也有对象property_exists的等价array_key_exists物.