2015-01-27 3 views
0

Я пытаюсь проверить, являются ли переменные, которые я получаю от ajax, то, что я ожидаю, или кто-то пытается ввести некоторые неприятные вещи.Пытаться перечислить переменные в PHP

В основном мне нужно проверить ... что $ sortvalue является одним из двух возможных вариантов и что $ sortorder является одним из двух возможных вариантов. Это должен быть оператор OR/AND. Как это:

Проверка 1: Если $ sortvalue либо «значение» ИЛИ «database_percent» И Проверка 2: Если $ SortOrder либо «по возрастанию» или «по убыванию»

Затем идти вперед с остальными кода.

У меня есть ниже в моем PHP, и часть $ sortvalue работает, но $ sortorder этого не делает. То есть, если я попытаюсь отправить значение, отличное от «asc» или «desc» для $ sortorder, я получаю ошибку 500. Наверное, я не совсем уверен, как вложить их вместе.

if ($sortvalue == "value" || $sortvalue == "database_percent" && $sortorder == "asc" || $sortorder == "desc") { 
//do something 
} 
else { 
//do something different 
} 
+2

Добавить скобки. '&&' имеет приоритет над условиями '||'. – mario

+2

Или используйте 'in_array ($ sortvalue, ['value', 'database_percent'])'. Это облегчает добавление дополнительных терминов, если это необходимо в будущем. – Phylogenesis

+0

@Phylogenesis Я бы хотел, чтобы эта работа работала, поскольку у меня есть намного больше терминов в некоторых других файлах. Я получаю 500 ошибок. Если это будет так: 'если ( \t in_array ($ sortvalue, [ 'значение', 'database_percent']) \t && \t in_array ($ SortOrder, [ 'по возрастанию', 'по убыванию']) ) ' – jonmrich

ответ

3

Вы должны использовать скобки для обеспечения приоритета операторов:

if (
    ($sortvalue == "value" || $sortvalue == "database_percent") 
    && 
    ($sortorder == "asc" || $sortorder == "desc") 
    ) { 
//do something 
} 
else { 
//do something different 
} 
+0

Стоит также отметить, что круглые скобки определяют отдельные * выражения *, поэтому эффективно вы выполняете выражение 1 && expression2'. – Boaz

Смежные вопросы