详解PHP中的null合并运算符
php  /  管理员 发布于 7年前   132
null合并运算符是一个好东西,有了它我们就能很方便的获取一个参数,并能在其为空的情况下提供一个默认值。比如在js中可以用||来搞: 而在PHP中,可惜PHP的||总是返回true或false,无法这样来搞。 PHP7才正式加入了??这个运算符: PHP7 估计还有很长时间才能用到生产环境中,那在目前的PHP5中有没有替代方案呢? 据研究,完全有个非常便捷的替代方案: -- 运行此代码: 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() 以前的写法 现在直接这样写就可以了 还可以这样连写使用function setSomething(a){ a = a || 'some-default-value'; // ...}
// 获取user参数的值(如果为空,则用'nobody')$username = $_GET['user'] ?? 'nobody';// 等价于:$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
// 获取user参数的值(如果为空,则用'nobody')$username = @$_GET['user'] ?: 'nobody';// 等价于:$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
$info = isset($_GET['email']) ? $_GET['email'] : ‘noemail';
$info = $_GET['email'] ?? noemail;
$info = $_GET['email'] ?? $_POST['email'] ?? ‘noemail';
您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号