Ваша первая часть кода:
if($x != (y&&z&&r&&w))
будет оценивать константы y
, z
, r
и w
(строки 'y'
, 'z'
, 'r'
и 'w'
, если эти константы не существуют ) ; делая AND
между каждым из них.
И тогда результат этого AND
будет сравниваться с $x
- который будет считаться логическим.
Итак, нет, это не совсем то, на что вы надеялись ; Вы должны использовать вторую часть кода:
if($x!=y && $x!=z && $x!=r && x!=w)
Обратите внимание, что здесь также будет выполняться поиск констант с именами y
, z
, r
и w
(или строк, если эти константы еще не существуют) - вам, вероятно, следует поставить некоторые $
перед ними, если вы ожидаете, что они будут рассматриваться как переменные.
Если вы хотите проверить, имеет ли переменная одно из нескольких значений, возможное решение состоит в том, чтобы поместить эти значения в массив, а затем использовать функцию in_array()
:
if (in_array($x, array(10, 20, 30) )) {
// $x is one of those values : 10, 20, 30
}
Некоторые думают, что это проще понять, чем писать несколько сравнений - я иногда использую это сам, и вроде как.