一、empty()函数的定义
empty(mixed $var): bool
empty()函数用于判断一个变量是否为空,如果为空(即不存在、已被赋值为null、false、0、''或未定义),则返回true;否则返回false。
二、empty()函数的用法
1、判断变量是否为空
empty()函数的最基本用法是判断变量是否为空。
$name = ''; if (empty($name)) { echo 'Name is empty'; // 输出:Name is empty } else { echo 'Name is not empty'; }
对于以下变量调用empty()函数,返回true:
- 未定义的变量
- null
- false
- 0
- ''
而以下变量调用empty()函数,返回false:
- 非空字符串
- 非零整数
- 非空数组
- 非空对象
2、清空变量值
empty()函数还可以通过传递变量的引用,来清空变量的值。
$data = array('name' => 'Tom', 'age' => 20); unset($data['name']); // 删除数据 if (empty($data['name'])) { echo 'Name is empty'; // 输出:Name is empty }
3、判断并处理数组元素
可以使用empty()函数,结合foreach语句来判断数组元素是否为空,从而进行相应处理。
$data = array('name' => '', 'age' => 20, 'gender' => null); foreach ($data as $key => $value) { if (empty($value)) { $data[$key] = 'Unknown'; } } print_r($data); // 输出:Array ( [name] => Unknown [age] => 20 [gender] => Unknown )
三、empty()函数与其他函数的比较
与empty()函数相关的有以下几个函数:
1、isset()函数
isset()函数用于判断一个变量是否已设置并且非null,如果已设置并且非null,则返回true;否则返回false。
所以isset()函数和empty()函数的区别在于,isset()函数可以判断数组元素是否存在(即已设置),而empty()函数不能。
$data = array('name' => '', 'age' => 20); if (isset($data['name'])) { echo 'Name is set'; // 输出:Name is set } else { echo 'Name is not set'; }
2、is_null()函数
is_null()函数用于判断一个变量是否为null,如果是null,则返回true;否则返回false。
所以is_null()函数和empty()函数的区别在于,is_null()函数只能判断变量是否为null,而不能判断变量是否存在或非空。
$name = null; if (is_null($name)) { echo 'Name is null'; // 输出:Name is null } else { echo 'Name is not null'; }
3、strlen()函数
strlen()函数用于获取字符串长度,如果字符串为空串,则返回0。
所以strlen()函数和empty()函数的区别在于,strlen()函数只能用于字符串类型的变量,而不能用于其他类型的变量。
$text = ''; if (strlen($text) == 0) { echo 'Text is empty'; // 输出:Text is empty } else { echo 'Text is not empty'; }
总结
empty()函数是一个非常实用的函数,可以用于判断变量是否为空、清空变量值、判断并处理数组元素等。要注意empty()函数返回值只有true和false两种,不能用于判断变量是否存在。同时,需要结合其他函数的使用,来达到更多的效果。