variables удалить - PHP:проверка того, равны ли три переменные




теги не (5)

Я никогда не сталкивался с этим раньше, но как бы вы проверили, одинаковы ли три переменные? Следующий, очевидно, не работает, но я не могу придумать элегантный (и правильный) способ написать следующее:

if ($select_above_average === $select_average === $select_below_average) { }


Answers

У меня была уникальная ситуация, в которой мне нужно было увидеть, было ли количество элементов в трех массивах таким же, как этот сценарий.

Вот что я придумал:

(Предположим, что поля, операторы и значения - все массивы)

$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's not the same
}else{
   //Then it's the same
}

Эта тактика подсчитывает поля в разных массивах и использует array_count_values, если они все одинаковы, тогда счетчик возвращаемого массива будет «1», если это что-то еще, тогда это не то же самое. Посмотрите на array_count_values ​​на php.net, чтобы понять, что он делает.


у вас уже есть свой ответ от Адама, но хороший способ запомнить, как правильно это сделать, - помнить о единственной проверке, которую вы должны обернуть () фигурными скобками, если вы делаете только одну проверку, тогда у вас уже есть фигурные скобки, предоставленные if ( ) .

Пример:

если ( a === b )

и если вы делаете несколько

if ( ( a === b ) && ( c === d ) )

Sop, если вы помните, что каждый набор фигурных скобок является проверкой проверки, вы можете войти в систему следующим образом:

if ( (( a === b ) || ( c === d )) && ( e === f ) )

если операторы и многие другие логические операции работают по иерархии, так что количество отдельных проверок внутри чека влияет на проверку родителя.

взяв третий пример выше, если сбой a === b или c === d тогда e === f никогда не будет проверяться, так как ab, cd завернут в фигурные скобки, чтобы он был возвращен и проверен.

Надеюсь, это поможет вам немного больше.


if ($select_above_average === $select_average
    && $select_average === $select_below_average) { }


Использование PDO и MYSQLi - хорошая практика для предотвращения инъекций SQL, но если вы действительно хотите работать с функциями и запросами MySQL, было бы лучше использовать

mysql_real_escape_string()

$unsafe_variable = mysql_real_escape_string($_POST['user_input']);

Есть больше возможностей для предотвращения этого: например, идентификация - если вход представляет собой строку, число, символ или массив, существует так много встроенных функций, чтобы обнаружить это. Кроме того, было бы лучше использовать эти функции для проверки входных данных.

is_string

$unsafe_variable = (is_string($_POST['user_input']) ? $_POST['user_input'] : '');

is_numeric

$unsafe_variable = (is_numeric($_POST['user_input']) ? $_POST['user_input'] : '');

И гораздо лучше использовать эти функции для проверки входных данных mysql_real_escape_string.





php variables equality