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 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 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年前 评论

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