1

我怎样才能使它成为一两行速记三进制?

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

8 回答 8

4

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

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

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

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

于 2013-01-19T02:31:49.620 回答
3
$tame = ($tame == null) ? 0 : $tame;
echo $tame . '<br />';
于 2013-01-19T02:14:48.373 回答
2
echo $tame == null ? $tame = '0<br />' : $tame.'<br />';
于 2013-01-19T02:15:03.020 回答
1
echo ($tame == null ? ($tame = 0) : $tame), '<br />';
于 2013-01-19T02:21:07.043 回答
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 />';
于 2013-01-19T02:21:15.593 回答
0
echo (is_null($tame)) ? '0<br />' : $tame . '<br />';
于 2013-01-19T02:14:57.110 回答
0

还有一种方法怎么样:)

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

如你所见,我省略了中间部分,因为 php 5.3 你可以这样做

三元部分只是需要打印的部分,对于旧的php,您仍然可以这样做

echo $tame . (is_null($tame)?'0':''). '<br />';
于 2013-01-19T02:27:50.597 回答
0

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

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

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

于 2013-01-19T02:36:49.330 回答