我看到很多人习惯在他们的代码中执行此操作:
$value = isset($text) ? $text : "";
此代码实质上意味着将$value
设置为$number
(如果已设置),否则将$value
设置为""
我进行了一些实验,并提出了一个更清晰的语法:
$value = "".$text;
除$text
为undefined
时,此代码涵盖所有案例并以相同方式运作。
所以,我的问题是:
$value = isset($text) ? $text : "";
isset
案例)isset
案例?答案 0 :(得分:1)
三元已经是那个兄弟的最短代码。你已经知道了。
答案 1 :(得分:1)
是的,它确实给出相同的结果,但仅当$test
包含空字符串时。如果$test
未初始化,则会生成错误,但检查这是否是此三元if语句的目的。
如果你想在不使用if语句的情况下做同样的事情,你仍然需要检查是否设置了$test
,如果没有,则使用空字符串初始化它,这需要另一个if语句
总结:不,似乎没有更好的方法来实现同样的目标。
答案 2 :(得分:0)
从PHP 7.0开始,有一个空的合并运算符可以缩短它:
// ternary
$value = isset($text) ? $text : "";
// null coalesce
$value = $text ?? "";
如果未定义变量,则连接语句将生成错误。