我有时会有代码,我不在乎是否设置了某些内容,“false”,“empty”,“0”或“null”。如果没有内容(无论出于何种原因),我只想显示其内容和其他内容。我经常这样做:
echo isset($a) && $a ? $a : 'something else';
似乎有了三元缩写,我可以为“空”,“假”,“空”做类似的事情:
echo $a ?: 'something else';
但是如果没有设置$ a,它就不起作用。所以我可以这样做:
echo $a ?? 'something else';
但如果$a
为空,它将显示一个空字符串。 是否有简化我的代码的技巧或简写?(仅在设置时显示“其他内容”而不是空 - 假 - null)。
用例示例:通过解析JSON,您可以没有值,没有键或没有条目的内容,并且无关紧要,您必须以相同的方式处理它。同样的事情,如果是空的,没有设置,假或空
答案 0 :(得分:4)
??
确实只有 null 合并,它不考虑真实性。
另一方面,?:
没有捕获未定义的变量错误。
我在这里看到的唯一简化是你使用isset($a) && $a
;这正是empty
语言结构的用途:
echo !empty($a) ? $a : 'something else';
话虽如此,你不应该首先拥有很多未定义的变量,这是错误的编码。您似乎最关心的是数组键,在这种情况下,小辅助函数可能是最好的操作过程:
echo get($a, 'key', 'something else');
我将实施作为读者的练习。