2013-04-08 3 views
0

Может ли кто-нибудь объяснить, можно ли объединить PHP-условный оператор (который содержит слово AND) с другим OR? И если да, то как бы структурировать синтаксис? Какой приоритет?Приоритет PHP и (&&), ИЛИ (||) в условных операторах

Например, может стремиться, чтобы достичь чего-то вроде ...

IF ($Var1 == "a" && $Var2 == "z"){ 
    //TRUE 
     echo "HELLO WORLD"; 

     //<some code block here> 
} 

OR 

IF ($Var3 == "5"){ 
    //TRUE 
     echo "HELLO WORLD"; 

     //<some code block here> 
} 

но объединены в одну, если условный оператор, так что я не должен дублировать мой блок кода для двух, если утверждения (I» Мне известно, что я могу поместить код в операторы IF в функции, но есть ли другой способ сделать это).

Таким образом, в целом (Примечание, в скобках ниже чисто добавлены как способ группировки элементов, чтобы указать свое намерение о том, как код должен работать/обрабатываться):

(If Var1 = a AND Var2 = b) OR (if Var3 = 5), run block of code. 

Я был бы очень признателен, если некоторые могли бы помочь мне. Я пытался найти это в течение нескольких месяцев, но нигде не было. Извините, если это уже обсуждалось здесь в Stack Overflow, я попытался выполнить поиск, но ничего не нашел, хотя мои поисковые запросы могли быть неправильными.

+0

http://php.net/manual/en/language.operators.php –

+1

http://www.php.net/manual/en/language.operators.precedence.php && имеет более высокий приоритет, чем || –

+0

Спасибо Salman A & Mark Baker. Посмотрев на предоставленные ссылки, я вижу, что && действительно имеет приоритет над || Я думаю, что я буду использовать скобки в своем кодировании, хотя это обеспечивает приоритет, который мне требуется. Это также должно сделать код более простым, если какая-либо отладка потребуется на более позднюю дату. – Salem874

ответ

3

Вы были почти там:

if (($Var1 == "a" && $Var2 == "z") || ($Var3 == "5")) { 

Посмотрите внимательно на порядок скобок. Почти в каждом языке, с которым я столкнулся, скобка в условном выражении указывает, что результат выражения в скобке должен оцениваться как целое. PHP не является исключением - первая половина является только истиной, если оба var1 = a и var2 = z, а другая половина - или только true, если var3 = 5. Полное верно, когда либо [var1, var2] = [a , z] или [var3] = [z].

+0

Ничего себе, поэтому мой синтаксис псевдокода был прав? Отлично! Я даже не думал об этом, я просто написал это так, чтобы попытаться проиллюстрировать то, что я пытался сделать! Спасибо – Salem874

4

Проверьте это:

if (($Var1 == "a" && $Var2 == "z") || ($Var3 == "5")){ 
    //TRUE 
     echo "HELLO WORLD"; 

     //<some code block here> 
} 

На самом деле, вам не нужны дополнительные скобки, поскольку & & имеет более высокий приоритет, чем ||. Тем не менее, это помогает легко отслеживать все.

+0

Спасибо Korcholis, Да, как я уже говорил выше, я думаю, что я поеду с круглыми скобками в любом случае, так как это упростит выполнение кода (i STILL считаю себя относительно новым к PHP). – Salem874

3

использования, как это: -

if (($Var1 == "a" && $Var2 == "z") || ($Var3 == "5")) { 
    echo "Hello World"; 
} 
0
if ($Var1 == 'a' && $Var2 == 'b' || $Var3 == 5) 
{ 
//run block of code. 
} 
Смежные вопросы