PHP中的null合并运算符
2015-12-30 11:13
477 查看
project: blog target: null-coalesce-operator-in-php.md date: 2015-12-30 status: publish tags: - Null Coalesce - PHP categories: - PHP
null合并运算符是一个好东西,有了它我们就能很方便的获取一个参数,并能在其为空的情况下提供一个默认值。比如在js中可以用
||来搞:
function setSomething(a){ a = a || 'some-default-value'; // ... }
而在PHP中,可惜PHP的
||总是返回
true或
false,无法这样来搞。
PHP7才正式加入了
??这个运算符:
// 获取user参数的值(如果为空,则用'nobody') $username = $_GET['user'] ?? 'nobody'; // 等价于: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
PHP7 估计还有很长时间才能用到生产环境中,那在目前的PHP5中有没有替代方案呢?
据研究,完全有个非常便捷的替代方案:
// 获取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的错误。
相关文章推荐
- 细谈php mysql数据库连接操作
- phpExcel导出大量数据出现内存溢出错误的解决方法
- PHP DES 对称-加密解密
- YII2安装
- mac php 安装 encrypt 扩展
- 使用ftp
- 一个IT人士的PHP之旅
- 分享PHP守护进程类
- PHP实现敏感词过滤系统
- php 数组中包含中文转json乱码处理
- PHP 汉字转拼音 utf-8
- 使用php扩展trie_filter,利用词库,过滤敏感词
- php中计算二维数组中某一元素之和
- php文件上传大小限制的修改方法大全
- 如何写php守护进程(Daemon)
- PHP: 深入pack/unpack
- PHP汉字转换拼音的函数代码
- PHP 在源码中实现换行使得页面源码更精致美观
- PHP通过计算经纬度获取附近的数据信息
- PHP运行环境之IIS FastCGI 进程意外退出解决办法