$a = '';
$b = 1;
如果使用PHP中的简写,如果$ a =''打印$ b?
在javascript中有类似
的内容a || b;
答案 0 :(得分:1)
$a = '';
$b = 1;
echo $a ?: $b; // 1
在$ a评估为false之前,将显示$ b。请记住,以下内容被视为empty:
"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
$var; (a variable declared, but without a value)
这意味着如果$ a是“”,0,“0”,null,false,array(),..那么将显示$ b。请参阅PHP type comparison tables。
如果只想在$ a是空字符串时显示$ b,那么你应该使用严格的比较运算符(===)
$a = '';
$b = 1;
echo $a === '' ? $b : ''; // 1
答案 1 :(得分:1)
这是PHP中IF/Else
语句的简写。
echo ($a != '' ? $a : $b)
如果$a
不是空字符串输出(echo)$a
,否则输出$ b。
答案 2 :(得分:0)
正如其他人所说,Turnary运算符在大多数senario中都非常方便。
echo $a ?: $b;//b
但这不是empty()的简写。 如果未设置var / array键/属性,三元运算符将发出通知。
echo $someArray['key that doesnt exist'] ?: $b;//Notice: Undefined index
echo $arrayThatDoesntExist['key-that-doesnt-exist'] ?: $b;//Notice: Undefined variable
empty()将为您处理其他检查,并建议您仅使用它。
if (empty($arrayThatDoesntExist['key-that-doesnt-exist'])) echo $b;
从技术上讲,您可以使用@禁止显示警告/通知,而三元运算符将替代empty()。
@echo $someArray['key that doesnt exist'] ?: $b;
@echo $arrayThatDoesntExist['key-that-doesnt-exist'] ?: $b;
但是通常不建议这样做,因为过高的注意事项和警告可能会在以后给您带来麻烦,而且我认为这可能会对性能产生影响。