PHP 7 新特性二 Null coalescing operator(空合并运算符)
在PHP 7中,引入了一个新的特性,即空合并运算符(??)。它用于与isset()函数一起替换三元运算。该空如果它存在,而不是空合并运算符返回第一个操作数; 否则返回第二个操作数。
PHP 7中引进了空合并运算符(??),空值合并运算符,英文名叫the null coalescing operator,符号为两个英文问号写作(??),语法形如 $a = $b ?? $c; 意思是如果变量 $b 已经定义,并且没有被注销删除,并且不为null, 就将 $b 的值赋给变量 $a, 否则将变量 $c 的值赋给变量 $a.
$a = $b ?? $c; 相当三元运算的 $a = isSet($b) ? $b : $c;
或者条件结构运算
注意:PHP null合并运算符??前面的变量不存在时不会报错,但如果??后面的变量不存在,则会触发E_NOTICE级别的错误。PHP可空合并运算符的“空”特指null,不是其他能够让empty()返回true的false, '', array()等变量值。如果一个变量$v被赋值为null, isSet($v)返回false, 所以上例不需要判断$b和null的关系。
例
<?php // //获取$ _GET ['user']的值并返回'not passed' // 判断有没有传递用户名 $username = $_GET['username'] ?? 'not passed'; var_dump($username); echo "<br/>"; // 使用三元运算符的等效代码 $username = isset($_GET['username']) ? $_GET['username'] : 'not passed'; var_dump($username); echo "<br/>"; // 使用"??"链接使用 $username = $_GET['username'] ?? $_POST['username'] ?? 'not passed'; var_dump($username); //它产生以下浏览器输出 - //not passed //not passed //not passed
使用空合并运算有利于代码简介等等功效。
PHP 7 新特性二 Null coalescing operator(空合并运算符):https://www.yzdlm.com/php/10.html
作者:大脸猫 分类: 大脸猫PHP博客
上一篇:PHP 7新特性一 Short closures 短闭包 下一篇:PHP 7 新特性三 Traits
评论
乖,登录后才可以留言!
QQ一键登录