📅  最后修改于: 2023-12-03 15:18:34.007000             🧑  作者: Mango
在PHP 7.0之后,加入了一个新的运算符——空合并运算符(??
),用于一个变量为null时使用默认值。
$result = $variable ?? $default;
如果$variable
不为null,则返回它的值;否则返回$default
的值。
以下是一些示例:
$name = $_GET['name'] ?? 'Guest';
echo $name;
如果URL没有提供name参数,则打印出"Guest"。
$price = $_POST['price'] ?? $data['price'] ?? 0;
echo $price;
如果POST请求没有提供价格就使用默认的数据价格,如果数据中也没有设定价格,就打印出0。
空合并运算符的执行顺序是从左到右,如果遇到一个不为null的操作数,就返回它的值。如果所有操作数都为null,则返回最后一个操作数。
以下是一些示例:
$a = null;
$b = 42;
$c = 0;
$d = $a ?? $b ?? $c;
echo $d; // 输出42
$e = $a ?? $c ?? $b;
echo $e; // 输出42
$f = $a ?? $b ?? $c ?? $d;
echo $f; // 输出42
在以上示例中,$a
为null,所以$d
的值为$b
的值42。而在$e
的例子中,$a
和$c
都为null,所以$e
的值是$b
的值42。在$f
的例子中,由于$a
和$c
都为null,所以不断迭代,直到最后一个非null的操作数$d
,所以$f
的值也为42。
使用空合并运算符与三元运算符相结合,可以充分发挥它们的优势。
例如:
$isAdmin = $_SESSION['isAdmin'] ?? false;
$msg = ($isAdmin) ? 'Welcome Admin!' : 'Welcome Guest!';
echo $msg;
如果$_SESSION['isAdmin']
存在,且不为null,则$isAdmin
的值为它的值;否则$isAdmin
的值为false。这种结合运用可用于判断用户是否登录,是否有管理员权限等等。
空合并运算符能够很好地简化代码。在一个变量清晰的默认值存在时,使用它可以减少大量的冗余语句,更好地控制代码的可读性。
如果您还没有使用过空合并运算符,试着在适当的场景下使用它,相信它会带来令人惊喜的便利。