PHP 7 以下 代替 ?? 运算符

代码

在 php 7 中,可以使用 ?? 运算符
example:
return $var ?? '';

function first_no_null(&$var, $default = '')
{
    return !empty($var) ? $var : $default;
}

调用

// 普通调用
$var = first_no_null($var);

// 数组调用
$var = first_no_null($arr['example']));

// 对象调用
$var = first_no_null($obj->example);
本作品采用《CC 协议》,转载必须注明作者和本文链接
Study hard and make progress every day. Study hard and make progress every day.
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 8
leo

并没有用,举个例子:$b->abc->abc ?? '1',改用你的first_no_null依然会报错:

first_no_null($b->abc->abc, '1')
PHP error:  Undefined variable: b on line 1
7年前 评论
mouyong

@leo 正在改 :joy: 我刚刚调用也发现了

7年前 评论
mouyong

@leo 有没有更好的的解决办法,php 7 以下,老是用 isset() 和 !empty() ,感觉太麻烦了

7年前 评论
leo

!empty() 本身就已经包含了 isset 判断,isset可省略

7年前 评论
mouyong

@leo 我试试,我这数组判断,总是报出未定义索引

7年前 评论
mouyong

@leo 我想要这样判断,怎么写比较合适?
file
如果直接这样传到
file
会报出未定义索引

7年前 评论
leo
function first_no_null(&$a, $default) {
  return isset($a) && !empty($a) ? $a : $default;
}

加个引用就可以了

7年前 评论
mouyong

@leo 哇哇,好神奇,解决了,而且对象,数组,普通变量都可以直接调用,还不会报错。:+1: :kissing_heart:

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
打杂的 @ 某某医学
文章
35
粉丝
63
喜欢
328
收藏
112
排名:37
访问:19.1 万
私信
所有博文
社区赞助商