Ответ 1
if ((a == b) && (b == c)) {
... they're all equal ...
}
с помощью переходного отношения
Я никогда раньше не сталкивался с этим, но как бы вы проверили, одинаковы ли три переменные? Следующий, очевидно, не работает, но я не могу придумать элегантный (и правильный) способ написать следующее:
if ($select_above_average === $select_average === $select_below_average) { }
if ((a == b) && (b == c)) {
... they're all equal ...
}
с помощью переходного отношения
$values = array($select_above_average, $select_average, $select_below_average);
if(count(array_unique($values)) === 1) {
// do stuff if all elements are the same
}
Был бы другой способ сделать это.
if ($select_above_average === $select_average
&& $select_average === $select_below_average) { }
у вас уже есть свой ответ от Адама, но хороший способ запомнить, как это сделать правильно, - помнить о единственной проверке, которую вы должны обернуть в фигурные скобки ()
, если вы делаете только одну проверку, тогда у вас уже есть скобки, предоставленные оператором if ( ).
Пример:
если ( a === b )
и если вы делаете несколько, то
if (( a === b ) & ( c === d ))
Sop, если вы помните, что каждый набор фигурных скобок является проверкой проверки, вы можете ввести логин следующим образом:
if ((( a === b ) || ( c === d )) & ( e === f ))
Если операторы и многие другие логические операции работают над иерархией, так что количество отдельных проверок внутри проверки влияет на проверку родителя.
взяв третий пример выше, если a === b
или c === d
терпит неудачу, тогда e === f
никогда не будет проверяться, так как ab, cd завернут в фигурные скобки, чтобы оно было возвращено и проверено.
Надеюсь, это поможет вам немного больше.
У меня была уникальная ситуация, в которой мне нужно было увидеть, было ли количество элементов в трех массивах таким же, как этот сценарий.
Вот что я придумал:
(Предположим, что поля, операторы и значения - все массивы)
$allfieldscount = array(count($fields), count($operators), count($values)); //store an array of the count of all the arrays.
$same = array_count_values($allfieldscount);//returns an array by values in the array. We are looking to see only 1 item in the array with a value of 3.
if(count($same) != 1){
//Then it not the same
}else{
//Then it the same
}
Эта тактика подсчитывает поля в разных массивах и использует array_count_values, если они все одинаковы, тогда счетчик возвращаемого массива будет "1", если это что-то еще, то это не то же самое. Посмотрите на array_count_values на php.net, чтобы понять, что он делает.