三元运算符缩写?和?:

时间:2017-03-08 10:24:24

标签: php

我有时会有代码,我不在乎是否设置了某些内容,“false”,“empty”,“0”或“null”。如果没有内容(无论出于何种原因),我只想显示其内容和其他内容。我经常这样做:

echo isset($a) && $a ? $a : 'something else';

似乎有了三元缩写,我可以为“空”,“假”,“空”做类似的事情:

echo $a ?: 'something else';

但是如果没有设置$ a,它就不起作用。所以我可以这样做:

echo $a ?? 'something else';

但如果$a为空,它将显示一个空字符串。 是否有简化我的代码的技巧或简写?(仅在设置时显示“其他内容”而不是空 - 假 - null)。

用例示例:通过解析JSON,您可以没有值,没有键或没有条目的内容,并且无关紧要,您必须以相同的方式处理它。同样的事情,如果是空的,没有设置,假或空

1 个答案:

答案 0 :(得分:4)

??确实只有 null 合并,它不考虑真实性
另一方面,?:没有捕获未定义的变量错误。

我在这里看到的唯一简化是你使用isset($a) && $a;这正是empty语言结构的用途:

echo !empty($a) ? $a : 'something else';

话虽如此,你不应该首先拥有很多未定义的变量,这是错误的编码。您似乎最关心的是数组键,在这种情况下,小辅助函数可能是最好的操作过程:

echo get($a, 'key', 'something else');

我将实施作为读者的练习。