我的代码如下:
number_format(($hasilz->harga>100000 ? $hasilz->harga+2000 :
($hasilz->harga>300000 ? $hasilz->harga+4000 :
($hasilz->harga>400000 ? $hasilz->harga+8000 :
$hasilz->harga+10000))), 0, ',', '.')
此代码结果仅读取+2000和+10000 任何想法?
答案 0 :(得分:2)
让我们看看你在那里(简化):
if (hagara > 100000) {
harga+2000
} else if (hagara > 300000) {
hagara+4000
} else if (hagara > 400000) {
hagara+8000
} else {
hagara+10000
}
如果你这样写,很容易看到。 hagara
要么是> 100000会导致+ 2000,要么会更少,然后会产生+10000。
换句话说,两个else if
将永远不会成立,因为如果它们是第一个,那么第一个就是真的。
我认为这也是一个很好的例子,当你不应该使用tenary运算符时。它只是让人很难阅读和理解......有时好的旧方法只是更好的解决方案。 ;)
编辑:要回答这个问题,你必须使用if语句的不同顺序,从最大的语句开始(或者将它们写成完全不同的语句)。但是,如前所述,你不应该这样做。