Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

много подобных условий, можно ли как то так сокращать?

wALLop Мастер (1310), закрыт 8 лет назад
сократить if ($x == 1 and ($y == 1 or $y == 2 or $y == 3))
вместо if ($x == 1 and $y == 1 or $x == 1 and $y == 2 or $x == 1 and $y == 3))

разбить вот так можно,
if ($x == 1){ if ($y == 1 or $y == 2 or $y == 3)}
но не в моем случае, условия более сложные в коде, поэтому интересует именно этот вопрос
Лучший ответ
Manunich Мудрец (15905) 8 лет назад
Может использовать диапазоны, типа if($x ==1 && in_array($y, [1,2,3])){...

В массиве могут быть различные значения

А ещё фраза "много подобных условий" наталкивает на мысль о создании одной функции, которую можно будет везде вызывать)
Остальные ответы
Миша Сретенков Ученик (225) 8 лет назад
может так?
if ($x == 1 and ($y>=1 and $y <= 3))

и еще можно убрать внутренний скобки
if ($x == 1 and $y>=1 and $y <= 3)
wALLopМастер (1310) 8 лет назад
блин не это имел ввиду, ну допустим вот так
if ($x == 1 and ($y == 1 or $y == 7))

вопрос можно ли использовать скобки? и будет ли это равносильно:
if ($x == 1 and $y == 1 or $x == 1 and $y == 7))
Миша Сретенков Ученик (225) скобки скорее всего нужны, потому что приоритет у операций and и or разный
Максим Искусственный Интеллект (218438) 8 лет назад
$x == 1 and $y == 1 or $x == 1 and $y == 2 or $x == 1 and $y == 3
Разумеется это равносильно: $x == 1 and ($y == 1 or $y == 2 or $y == 3)
Капитан Гугл Искусственный Интеллект (146251) 8 лет назад
Вот именно для этого на первом курсе студентам-программистам дают дискретную математику, булеву алгебру, ДНФ/КНФ, законы де Моргана и поглощения и т. д. Да, есть формулы для упрощения подобных выражений, но их много разных для разных случаев.
А в данном случае прав Manunich.
wALLopМастер (1310) 8 лет назад
ну не на того я учился, печаль xD
Капитан Гугл Искусственный Интеллект (146251) Первый результат из гугла: http://guap. ru/guap/kaf44/trud/erosh_diskr_mat.pdf За пару месяцев вполне реально освоить, в жизни пригодится.
Похожие вопросы