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.
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 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
8年前 评论
mouyong

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

8年前 评论
mouyong

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

8年前 评论
leo

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

8年前 评论
mouyong

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

8年前 评论
mouyong

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

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

加个引用就可以了

8年前 评论
mouyong

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

8年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!