3

我正在寻找一些速记 if/else 代码,但不像$var ? $a : $b它不需要类似“else”的返回值。我想要的基本上是这样,但更短:

$myVariable = "abc";
echo $myVariable ? $myVariable : "hello";
echo $myVariable ? "hello" : $myVariable;

我有点习惯在 Lua 中做这样的事情,就像:

local myVariable = "abc"

-- In case myVariable is false, print "hello". Otherwise it prints "abc"
print ( myVariable or "hello" )

 -- In case myVariable does have something (So, true) print "goodday."
print ( myVariable and "goodday" )

所以我想知道,PHP 是否具有执行此类操作的功能?谢谢。

4

6 回答 6

4
$myVariable ? $myVariable : ""; 

相当于:

$myVariable ?: "";

PS:你应该知道 PHP 确实在这里输入杂耍。这与以下内容基本相同:

if ($myVariable == TRUE) ...

如果$myVariable碰巧是一个类似的字符串0,它将评估为假。但是00将评估为真。我发现这并不像看起来那么有用。在许多情况下,您需要先检查是否$myVariable已设置,或者进行类型比较并确保变量是布尔值...

于 2013-02-18T11:58:11.177 回答
2

您不必使用 ternar 运算符的 else,您可以始终执行以下操作:

$myVariable = "abc";
echo $myVariable ? $myVariable : "";

不是 $myVariable 时什么都不打印

于 2013-02-18T11:56:19.697 回答
2
echo (!empty($myVariable)) ? $myVariable : "hello";

或者

echo (isset($myVariable)) ? $myVariable : "hello";

由于 PHP 是一种弱类型语言,$myVariable包含0or "", 可能会被视为false。您应该检查变量是否存在,或者至少确保它是字符串。

于 2013-02-18T11:58:30.943 回答
2

从 PHP 5.3 开始,您可以执行以下操作:

echo $myVariable ?: "hello";

女巫等于:

echo $myVariable ? $myVariable : "hello";

我认为第二种选择是不可能的。

于 2013-02-18T11:58:34.813 回答
2
$myVariable = "abc";
echo $myVariable ? : "hello";

它不会比 PHP 中的上述内容更短。那应该检查 $myVariable 是否有一个值并将其打印出来,否则打印出“hello”

于 2013-02-18T11:58:53.373 回答
0

所有人都这样做。在 php 7 中甚至更短

$var = $var ?? $var;
于 2016-05-30T08:13:41.493 回答