PHP简写if / else三元

时间:2013-01-19 02:13:19

标签: php

我怎样才能把它变成一行或两行速记三元?

if ($tame == null): 
    echo $tame = '0' . '<br />';
else: 
    echo $tame . '<br />';
endif;

8 个答案:

答案 0 :(得分:4)

看起来OP期望$ tame是一个整数值。为什么他会为零写零?

如果是这种情况。这是最短的解决方案。

echo (int)$tame.'<br/>';

这将为null或数值回显0。也没有理由将$ tame设置为零,因为PHP将null和零视为相同。

答案 1 :(得分:3)

$tame = ($tame == null) ? 0 : $tame;
echo $tame . '<br />';

答案 2 :(得分:2)

echo $tame == null ? $tame = '0<br />' : $tame.'<br />';

答案 3 :(得分:1)

echo ($tame == null ? ($tame = 0) : $tame), '<br />';

答案 4 :(得分:1)

三元运算符在一行中基本上是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 />';

答案 5 :(得分:0)

echo (is_null($tame)) ? '0<br />' : $tame . '<br />';

答案 6 :(得分:0)

又如何:)

echo $tame . (!is_null($tame)?:'0'). '<br />';

你可以看到我省略了中间部分,因为php 5.3你可以这样做

三元部分只是需要打印的部分你仍然可以这样做为旧的PHP

echo $tame . (is_null($tame)?'0':''). '<br />';

答案 7 :(得分:0)

如果$tame为null或整数,则可以完全跳过逻辑:

echo sprintf("%d<br />", $tame);

这假设您并不是要在第二行中将"0<br />"分配给$tame,正如@mellamokb所指出的那样。