ifelse в выражении эха

У меня есть код, как показано ниже:

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

Решение

Посмотрим, что у вас там (упрощенно):

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. Это просто делает его действительно трудным для чтения и понимания … иногда старый добрый it-подход — просто лучшее решение. 😉

РЕДАКТИРОВАТЬ: Чтобы ответить на вопрос, вы должны использовать другой порядок операторов if, начиная с самого большого (или написать их совершенно по-другому). Однако, как уже упоминалось, вы не должны этого делать.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector