在echo语句中ifelse

时间:2017-01-20 21:59:55

标签: php if-statement echo

我的代码如下:

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 任何想法?

1 个答案:

答案 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语句的不同顺序,从最大的语句开始(或者将它们写成完全不同的语句)。但是,如前所述,你不应该这样做。