加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

详解PHP中的null合并运算符

发布时间:2020-12-13 03:03:04 所属栏目:PHP教程 来源:网络整理
导读:《PHP实战:详解PHP中的null合并运算符》要点: 本文介绍了PHP实战:详解PHP中的null合并运算符,希望对您有用。如果有疑问,可以联系我们。 null合并运算符是一个好东西,有了它我们就能很方便的获取一个参数,并能在其为空的情况下提供一个默认值.好比在js中

《PHP实战:详解PHP中的null合并运算符》要点:
本文介绍了PHP实战:详解PHP中的null合并运算符,希望对您有用。如果有疑问,可以联系我们。

null合并运算符是一个好东西,有了它我们就能很方便的获取一个参数,并能在其为空的情况下提供一个默认值.好比在js中可以用||来搞:PHP实例

function setSomething(a){
  a = a || 'some-default-value';
  // ...
}

而在PHP中,惋惜PHP的||总是返回true或false,无法这样来搞.PHP实例

?PHP7才正式参加了??这个运算符:PHP实例

// 获取user参数的值(如果为空,则用'nobody')
$username = $_GET['user'] ?? 'nobody';
// 等价于:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

?PHP7 估计还有很长时间能力用到生产环境中,那在目前的PHP5中有没有替代方案呢?PHP实例

?据研究,完全有个非常便捷的替代计划:PHP实例

// 获取user参数的值(假如为空,则用'nobody')
$username = @$_GET['user'] ?: 'nobody';
// 等价于:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

?-- 运行此代码: https://3v4l.org/aDUW8PHP实例

瞪大了眼睛看,跟前面的PHP7的例子差不多,主要是把 ?? 替换为了 ?: . 这个是个什么鬼呢?其实这便是 (expr1) ? (expr2) : (expr3) 表达式的省略模式:PHP实例

?表达式 (expr1) 必修 (expr2) : (expr3) 在 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3.PHP实例

?自 PHP 5.3 起,可以省略三元运算符中间那部分.表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,不然返回 expr3.PHP实例

?-- http://php.net/manual/zh/language.operators.comparison.php
PHP实例

当然,这个替代方案也不是完美的 ―― 如果 $_GET 中没有 'user',会有一条 Notice: Undefined index: user 的错误,所以必要用@来抑制这个错误,或者关闭 E_NOTICE 的错误.PHP实例

ps:PHP7 null合并运算符 离别isset()PHP实例

以前的写法PHP实例

$info = isset($_GET['email']) ? $_GET['email'] : ‘noemail';

如今直接这样写就可以了PHP实例

$info = $_GET['email'] ?? noemail;

还可以如许连写使用PHP实例

$info = $_GET['email'] 必修必修 $_POST['email'] 必修必修 ‘noemail';

《PHP实战:详解PHP中的null合并运算符》是否对您有启发,欢迎查看更多与《PHP实战:详解PHP中的null合并运算符》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读