PHP或空变量的简写

时间:2015-01-02 02:58:57

标签: php

$a = '';
$b = 1;

如果使用PHP中的简写,如果$ a =''打印$ b?

在javascript中有类似

的内容
a || b; 

3 个答案:

答案 0 :(得分:1)

Ternary Operator

$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;

但是通常不建议这样做,因为过高的注意事项和警告可能会在以后给您带来麻烦,而且我认为这可能会对性能产生影响。