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.
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《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
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 哇哇,好神奇,解决了,而且对象,数组,普通变量都可以直接调用,还不会报错。:thumbsup: :kissing_heart:

7年前 评论