【发布时间】:2012-12-29 12:36:42
【问题描述】:
可能重复:
nested php ternary trouble: ternary output != if - else
为什么会这样:
if($db->f('item_bonus') > 0)
$bonus = $db->f('item_bonus').' (i)';
elseif($db->f('manufacturer_bonus') > 0)
$bonus = $db->f('manufacturer_bonus').' (m)';
elseif($db->f('category_bonus') > 0)
$bonus = $db->f('category_bonus'). ' (c)';
但是这样不行:
$bonus = $db->f('item_bonus') > 0 ? $db->f('item_bonus').' (i)' : $db->f('manufacturer_bonus') > 0 ? $db->f('manufacturer_bonus').' (m)' : $db->f('category_bonus') > 0 ? $db->f('category_bonus'). ' (c)' : '0';
我做错了什么? $db->f 返回数字,浮点型。
【问题讨论】:
-
我建议用括号将语句分组。
-
PHP 的
?:操作符是counterintuitive 当你链接它时。此外,第一个版本更具可读性。 -
当你现在不明白的时候,你怎么能假设你或任何其他人会在以后(一周内)明白呢?只是不要以这种方式使用
?:,否则你会在自己的脚下开枪。 -
@Luntegg 因为我说的是:你稍后会看到这段代码,你可能不会再理解它,直到你调试它。您正在生成代码,这很难维护。
-
@KingCrunch 我意识到......好吧,谢谢,我会记住的。只是想做一个紧凑的代码。
标签: php if-statement