繁体   English   中英

三元运算符速记?? 和?:

[英]Ternary operator shorthands ?? and ?:

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

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

似乎有了三元速记,我可以对“空”,“假”,“空”执行以下操作:

echo $a ?: 'something else';

但是,如果未设置$ a,它将不起作用。 所以我可以做这样的事情:

echo $a ?? 'something else';

但是如果$a为空,它将显示一个空字符串。 有简化我代码的技巧或速记吗? (仅在已设置且不为empty-false-null的情况下显示“其他”)。

用例示例:使用JSON解析时,您可以没有任何值,项没有键或内容,这没关系,您必须以相同的方式处理它。 同样,如果为空,则未设置,为false或null

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

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

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

话虽这么说,首先您不应该有很多未定义的变量 ,这是不好的编码。 您似乎最担心数组键,在这种情况下,小的辅助函数可能是最好的做法:

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

我将实现作为练习留给读者。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM