PHP中的短if else语句是什么?

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是否有这样的功能呢?谢谢。


我实在不明白你的问题。你想要发生什么?你尝试过哪些失败了? - Madara's Ghost
你的意思是像这样 if($myVariable)echo $myVariable ; 吗? - NullPoiиteя
在 PHP 中,最短的方法是三元运算符“?:”,这一点你已经知道了。 - Boynux
6个回答

4
$myVariable ? $myVariable : ""; 

等同于:

$myVariable ?: "";

注意,PHP 在这里使用了类型强制转换。基本上相当于:

if ($myVariable == TRUE) ...

如果$myVariable是一个像0这样的字符串,它将被解释为false。但是00将被解释为true。我发现这并不像看上去那么有用。在许多情况下,您需要先检查$myVariable是否已设置,或进行类型比较并确保变量是布尔值...


应该没问题。在这些变量存在之前,另一个函数中有一定的类型检查。除此之外,这是一些公共脚本。我期望我的同事们遵守规则并坚持函数的使用。 - Deltanic

2

您不必使用三元运算符的else,您总是可以像这样做:

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

当 $myVariable 不存在时不会打印任何内容。


2
我认为问题是关于更短的语法。 - fsw
这正是我在我的例子中得到的>_>。 - Deltanic
我认为这并不完全符合你的例子。 - Kyborek

2
echo (!empty($myVariable)) ? $myVariable : "hello";

或者

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

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


2
自 PHP 5.3 版本以来,您可以这样做:
echo $myVariable ?: "hello";

等于:

echo $myVariable ? $myVariable : "hello";

我认为第二个选项不可行。

听起来不错。我们这里正在使用PHP 5.4,所以一切都很好。看起来这是一个不错的选择 :) - Deltanic

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

在PHP中,以上代码是最简洁的。它将检查$myVariable是否有值并打印输出,否则会打印输出"hello"。


0

都是一样的。在 PHP 7 中甚至更短。

$var = $var ?? $var;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接