2017-01-20 6 views
0

У меня есть код, как ниже: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 только любую идею?

ответ

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 никогда не будут истинными, потому что если бы они были, то первое, если бы оно было истинным.

Я думаю, что это также хороший пример, когда вы НЕ должны использовать оператора тендера. Это просто очень трудно читать и понимать ... иногда старый добрый подход - это лучшее решение. ;)

EDIT: Чтобы ответить на вопрос, вы должны использовать другой порядок if-утверждений, начиная с самого большого (или записать их совершенно иначе). Однако, как уже упоминалось, вы не должны этого делать.

+0

Как сделать elseif в блоке блока эхо-сигнала, возможно ли это сделать в тройном операторе? –

+0

@MorhanSTambunan - Если вы хотите, чтобы ваш код читался, вы этого не делаете. Вы делаете это, как этот пример, и после этого вы просто эхо 'number_format ($ hasilz-> harga, ...)' –

+0

просто вычислите значение, и когда вы закончите, вы эхо его. Таким образом, вы сохраняете удобочитаемость. Написание всего в одной строке/заявлении - это не путь, даже если это иногда бывает прохладно;) –

 Смежные вопросы

  • Нет связанных вопросов^_^