Ваш код синтаксически допустим, но семантически, вероятно, не то, что вы хотели.
Поскольку $var1 || $var2
является логическим выражением и всегда выдает true или false . А затем $var
сравнивается с результатом этого логического выражения. Так что $var
всегда сравнивается с true или false , а не с $var1
или $var2
(это то, что вы, вероятно, ожидали). Так что это не сокращение от ($var == $var1) || ($var == $var2)
.
Теперь, как вы уже отметили, in_array
- решение этой проблемы, если вы не хотите писать выражения типа ($var == $var1) || ($var == $var2)
, особенно если у вас есть произвольное число значений, которое вы хотите сравнить с:
in_array($var, array($var1, $var2))
Что эквивалентно:
($var == $var1) || ($var == $var2)
Если вам нужно строгое сравнение (с использованием ===
вместо ==
), установите третий параметр на true :
in_array($var, array($var1, $var2), true)
Что теперь эквивалентно:
($var === $var1) || ($var === $var2)