gpt4 book ai didi

详解PHP中的null合并运算符

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章详解PHP中的null合并运算符由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

?
1
2
3
4
function setSomething(a){
   a = a || 'some-default-value' ;
   // ...
}

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

 PHP7才正式加入了??这个运算符:

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

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

 据研究,完全有个非常便捷的替代方案:

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

 -- 运行此代码: https://3v4l.org/aDUW8 。

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

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

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

 -- http://php.net/manual/zh/language.operators.comparison.php 。

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

ps:PHP7 null合并运算符 告别isset() 。

以前的写法 。

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

现在直接这样写就可以了 。

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

还可以这样连写使用 。

?
1
$info = $_GET [ 'email' ] ?? $_POST [ 'email' ] ?? ‘noemail';

  。

最后此篇关于详解PHP中的null合并运算符的文章就讲到这里了,如果你想了解更多关于详解PHP中的null合并运算符的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com