如果在PHP中还有其他的那么短?

时间:2013-02-18 11:53:31

标签: php

我正在搜索一些简写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有功能做这样的事吗? 感谢。

6 个答案:

答案 0 :(得分:4)

$myVariable ? $myVariable : ""; 

相当于:

$myVariable ?: "";
PS:你应该知道PHP在这里打字玩杂耍。这基本上与:

相同
if ($myVariable == TRUE) ...

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

答案 1 :(得分:2)

你不必使用三元运算符,你可以总是这样做:

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

在没有$ myVariable

的情况下,什么都不打印

答案 2 :(得分:2)

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

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

由于PHP是弱类型语言,$myVariable0 ""可能会被视为false。 你应该检查变量是否存在,或者至少确保它是字符串。

答案 3 :(得分:2)

从PHP 5.3开始,你可以这样做:

echo $myVariable ?: "hello";

女巫等于:

echo $myVariable ? $myVariable : "hello";

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

答案 4 :(得分:2)

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

它在PHP中没有比上面更短。那应该检查$ myVariable是否有值并打印出来,否则打印出“hello”

答案 5 :(得分:0)

所有人都这样做。甚至更短的PHP 7

$var = $var ?? $var;