这些三元运算符输出相同的结果吗?


Do these ternary operator output the same result?

$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是否等于0isset($time)会返回TRUE,所以你会得到$time (0),而如果$time在第一个中是0,你会得到3600