2

我已经看到很多人习惯在他们的代码中这样做:

$value = isset($text) ? $text : "";

此代码本质上意味着设置$value$number(如果已设置),否则设置$value""

我做了一些实验,想出了一个更简洁的语法:

$value = "".$text;

除了 when $textis之外undefined,此代码涵盖了所有情况并且以相同的方式工作。

所以,我的问题是:

  1. 有没有更好、更短、更清洁的方法$value = isset($text) ? $text : "";
  2. 假设我的方法以同样的方式工作,我错了吗?(除了isset案例)
  3. 我的方法也可以修改以解决isset此案吗?
4

3 回答 3

1

三元已经是那个兄弟的最短代码了。你已经明白了。

于 2015-05-07T07:49:50.090 回答
1

是的,它确实给出了相同的结果,但前提是$test包含一个空字符串。if$test没有初始化,它会产生一个错误,但检查这就是这个三元 if 语句的目的。

如果你想在不使用 if 语句的情况下做同样的事情,你仍然需要检查 if$test是否设置,如果没有设置,则使用空字符串对其进行初始化,这需要另一个 if 语句。

总结一下:不,似乎没有更好的方法来实现同样的目标。

于 2015-05-07T07:50:52.900 回答
0

从 PHP 7.0 开始,有一个 null 合并运算符可以缩短它:

// ternary
$value = isset($text) ? $text : "";

// null coalesce
$value = $text ?? "";

如果未定义变量,您的连接语句将生成错误。

于 2015-05-13T03:18:46.183 回答