首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >快速返回第一个非空函数在PHP中的结果

快速返回第一个非空函数在PHP中的结果
EN

Stack Overflow用户
提问于 2018-02-01 07:54:41
回答 1查看 180关注 0票数 1

假设我有两个函数,getData1()getData2(),它们都返回一个数组,该数组可能是空的,也可能不是空的。

现在我想做第三个函数,它首先尝试getData1()。如果返回值不是空的,新函数应该从getData1()返回值,否则它应该尝试getData2(),如果返回值也是空的,则返回一个空数组。

我试过了

代码语言:javascript
运行
复制
return getData1() || getData2() || [];

但我没有得到getData1()getData2()的返回值,而是得到了truefalse

很明显我能做到

代码语言:javascript
运行
复制
$x = getData1();
if( empty($x) ) $x = getData2();
return $x;

代码语言:javascript
运行
复制
return !empty(getData1()) ? getData1() : getData2();

但我很好奇,是否有一种方法可以构造出更优雅的东西,比如第一条语句(不起作用的语句)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-01 07:57:53

如果您想要一行,可以使用双三元表达式:

代码语言:javascript
运行
复制
return getData1() ?: (getData2() ?: []);

空数组的计算结果为false,因此不需要empty().,也可以跳过三元表达式的第二个参数,因为这将是第一个表达式的结果:在这种情况下,数组--这正是您想要的--但是您不能在empty()中使用它,因为它会给您一个布尔值。

如果函数总是返回数组--不管是否为空--您只需要:

代码语言:javascript
运行
复制
return getData1() ?: getData2();

现在,如果getData2()也是空的,它将返回这个结果,一个空数组。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48557809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档