1. 介绍
在PHP7中引入了空合并运算符(null coalescing operator),用于简化代码中的条件判断。它的语法是??,可以用于检查变量是否为null,并设置默认值。
2. 基本用法
空合并运算符的基本用法是在一个变量前面加上??,后面紧跟着一个默认值。如果这个变量的值为null,那么默认值将被返回。
$name = $_GET['name'] ?? 'Guest';
echo "Hello, ".$name; // 如果$_GET['name']不存在或者为null,将输出"Hello, Guest"
在上面的例子中,我们通过使用空合并运算符来设置了一个默认的姓名,如果$_GET['name']不存在或者为null,那么默认值'Guest'将被返回。
3. 多个运算符的链接
空合并运算符可以与其他运算符进行链接,从而形成复杂的条件判断表达式。
$username = $user['name'] ?? $_SESSION['user'] ?? 'Guest';
echo "Hello, ".$username; // 如果$user['name']和$_SESSION['user']都不存在或者为null,将输出"Hello, Guest"
在上面的例子中,我们通过使用空合并运算符和逻辑或运算符来设置一个默认的用户名。如果$user['name']不存在或者为null,则会继续检查$_SESSION['user']的值是否为null。
4. 注意事项
4.1. 运算符的优先级
空合并运算符的优先级相对较低,因此在复杂表达式中,建议使用圆括号来明确运算顺序。
$result = $a ?? ($b ?? $c);
在上面的例子中,圆括号中的表达式先进行运算,然后再使用空合并运算符进行判断默认值。
4.2. 只能检查变量是否为null
空合并运算符只能用来检查变量是否为null,不能用来检查变量是否被定义。如果一个变量不存在,调用该变量将会产生一个“未定义变量”的错误。
$message = $message ?? 'Default message'; // 如果$message未定义,将会产生一个错误
在上面的例子中,如果$message变量未定义,使用空合并运算符将会产生一个错误。为了避免这个问题,我们可以使用isset()函数来判断变量是否被定义。
$message = isset($message) ? $message : 'Default message';
使用isset()函数可以避免产生错误,但是代码变得更冗长。因此,我们在使用空合并运算符时,需要注意变量是否被定义。
5. 总结
空合并运算符是PHP7中引入的一个新特性,可以用来简化条件判断。它的基本用法是在一个变量前面使用??,后面紧跟着一个默认值。如果这个变量的值为null,那么默认值将被返回。同时,空合并运算符还可以与其他运算符进行链接,形成复杂的条件判断表达式。
需要注意的是,空合并运算符只能检查变量是否为null,不能检查变量是否被定义。如果一个变量未定义,使用空合并运算符将会产生一个错误。因此,在使用空合并运算符时,需要注意变量是否被定义。