我正在搜索一些简写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有功能做这样的事吗? 感谢。
答案 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是弱类型语言,$myVariable
或0
""
可能会被视为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;