此页面应该包含关于变量生命周期的注释。
在使用变量之前,它并不存在。它未设置。可以使用 isset() 检查变量是否不存在。只要变量存在且未设置为 null,它就会返回 true。除了 null 之外,变量所持有的值在确定变量是否已设置方面不起作用。
将现有变量设置为 null 是取消设置变量的一种方法。另一种方法是使用 unset() 结构销毁变量。
<?php
print isset($a); // $a 未设置。输出 false。(或更准确地说,输出 ''。)
$b = 0; // isset($b) 返回 true(或更准确地说 '1')
$c = array(); // isset($c) 返回 true
$b = null; // 现在 isset($b) 返回 false;
unset($c); // 现在 isset($c) 返回 false;
?>
is_null() 等效于检查 isset() 是否为 false 的测试。
变量在作用域中首次使用时,会自动创建。此后 isset 为 true。在创建时,它也会根据上下文接收一个类型。
<?php
$a_bool = true; // 布尔值
$a_str = 'foo'; // 字符串
?>
如果在没有赋值的情况下使用变量,则它将未初始化并接收该类型的默认值。默认值为 _空_ 值。例如,布尔值默认为 FALSE,整数和浮点数默认为零,字符串默认为空字符串 '',数组默认为空数组。
可以使用 empty(); 测试变量是否为空。
<?php
$a = 0; // 此处 isset,但为空
?>
未设置的变量也为空。
<?php
empty($vessel); // 返回 true。另外,$vessel 未设置。
?>
以上所有内容也适用于数组元素。
<?php
$item = array();
// 现在 isset($item) 返回 true。但 isset($item['unicorn']) 为 false。
// empty($item) 为 true,empty($item['unicorn']) 也是如此
$item['unicorn'] = '';
// 现在 isset($item['unicorn']) 为 true。empty($item) 为 false。
// 但 empty($item['unicorn']) 仍然为 true;
$item['unicorn'] = 'Pink unicorn';
// isset($item['unicorn']) 仍然为 true。empty($item) 仍然为 false。
// 但现在 empty($item['unicorn']) 为 false;
?>
对于数组,这一点很重要,因为访问不存在的数组项可能会触发错误;您可能希望在使用数组和数组项之前使用 isset 测试它们是否存在。