$time ?: 3600
是否等价于isset($time) ? $time : 3600
?
No。在某些情况下,它们的计算值相同,但它们不相等。
<?php
print $time ?: 3600;
print "'n";
print isset($time) ? $time : 3600;
print "'n'n";
$time = 0;
print $time ?: 3600;
print "'n";
print isset($time) ? $time : 3600;
print "'n'n";
$time = 30;
print $time ?: 3600;
print "'n";
print isset($time) ? $time : 3600;
print "'n'n";
?>
输出:PHP Notice: Undefined variable: time in /home/hq6/PHP/Test2.php on line 2
3600
3600
3600
0
30
30
不,不完全是。$time ?: 3600
的做法与$time ? $time : 3600
类似。
差异在于$time
是否等于0
。isset($time)
会返回TRUE
,所以你会得到$time
(0
),而如果$time
在第一个中是0
,你会得到3600
。