如何使其成为一行或两行的速记三进制?
if ($tame == null):
echo $tame = '0' . '<br />';
else:
echo $tame . '<br />';
endif;
看起来OP期望$tame是一个整数值。不然他为什么把零写成零呢?
如果是这样的话。这是最短的解决方案。
echo (int)$tame.'<br/>';
对于null或数值将回显0。也没有理由将$tame设置为0,因为PHP对null和0的处理是一样的。
$tame = ($tame == null) ? 0 : $tame;
echo $tame . '<br />';
echo $tame == null ? $tame = '0<br />' : $tame.'<br />';
echo ($tame == null ? ($tame = 0) : $tame), '<br />';
三元运算符本质上是一行if..else
语句。
if (condition) {
action(a);
} else {
action(b);
}
变成:
action( condition ? a : b );
你所拥有的是:
if ($tame == null) {
echo $tame = '0' . '<br />';
} else {
echo $tame . '<br />';
}
可以写成:
echo $tame == null ? $tame = '0<br />' : $tame . '<br />';
然而,这个三元语句相对复杂,因为$tame
作为语句的一部分正在发生突变。以这种方式编写的代码更难阅读,因此也难以调试,这使得它更容易出错。如果您以更详细的形式编写代码,总体上会更好:
if ($tame == null) {
$tame = '0';
}
echo $tame . '<br />';
再来一种方式如何:)
echo $tame . (!is_null($tame)?:'0'). '<br />';
你可以看到我省略了中间部分,因为php 5.3你可以这样做
三进制部分只是需要打印的部分对于旧版本的php
仍然可以这样做echo $tame . (is_null($tame)?'0':''). '<br />';
echo (is_null($tame)) ? '0<br />' : $tame . '<br />';
如果$tame
为null或整数,则可以完全跳过逻辑:
echo sprintf("%d<br />", $tame);
这假定您并不打算在第二行中将"0<br />"
分配给$tame
,正如@mellamokb所指出的那样。