Использование AND / OR в if else заявление PHP

Как вы используете «AND / OR» в инструкции if else else? Будет ли это:

1) И

if ($status = 'clear' AND $pRent == 0) { mysql_query("UPDATE rent SET dNo = '$id', status = 'clear', colour = '#3C0' WHERE rent.id = $id"); } 

2) ИЛИ

 if ($status = 'clear' OR $pRent == 0) { mysql_query("UPDATE rent SET dNo = '$id', status = 'clear', colour = '#3C0' WHERE rent.id = $id"); } 

Related of "Использование AND / OR в if else заявление PHP"

Да. Ответ – да.
http://www.php.net/manual/en/language.operators.logical.php


Две вещи:

  • Многие программисты предпочитают && и || вместо and и / or , но они работают одинаково (безопасно для приоритета).
  • $status = 'clear' должен быть $status == 'clear' . = is присваивание, == это сравнение.

Немного поздно, но не важно …
вопрос: «Как вы используете …?» короткий ответ: вы делаете это правильно


Другой вопрос: «Когда вы его используете?»
Я использую && вместо AND и || вместо OR .

 $a = 1 $b = 3 

Теперь,

 if ($a == 1 && $b == 1) { TRUE } else { FALSE } 

в этом случае результат «ЛОЖЬ», потому что B не 1, теперь что, если

 if ($a == 1 || $b == 1) { TRUE } else { FALSE } 

Это вернет «TRUE», даже если B все еще не является значением, которое мы запрашиваем, есть еще один способ вернуть TRUE без использования OR / || и это будет XOR

 if ($a == 1 xor $b == 1) { TRUE } else { FALSE } 

в этом случае нам нужна только одна из наших переменных, но НЕ ОБА, если оба из них TRUE, результат будет FALSE.

Надеюсь, это поможет…

больше:
http://www.php.net/manual/en/language.operators.logical.php

У вас есть 2 вопроса.

  1. используйте == для сравнения. Вы использовали = который предназначен для назначения.

  2. используйте && для "и" и || для "или". and or будут работать, но они нетрадиционные.

В ответах здесь есть некоторые шуточные и вводящие в заблуждение комментарии, даже частично некорректная информация. Я хотел бы попытаться улучшить их:

Во-первых , как указывали некоторые, у вас есть ошибка в коде, относящаяся к вопросу:

 if ($status = 'clear' AND $pRent == 0) 

должен быть (обратите внимание на == вместо = в первой части):

 if ($status == 'clear' AND $pRent == 0) 

которая в этом случае функционально эквивалентна

 if ($status == 'clear' && $pRent == 0) 

Во-вторых , заметим, что эти операторы ( and or && || ) являются операторами короткого замыкания. Это означает, что если ответ можно определить с уверенностью из первого выражения, второй никогда не будет оценен. Опять же это не имеет значения для вашей отлаженной строки выше, но это чрезвычайно важно, когда вы комбинируете эти операторы с заданиями, потому что

В-третьих , реальная разница между and or и && || является их приоритетом для операторов . В частности, важно, чтобы && || имеют более высокий приоритет, чем операторы присваивания ( = += -= *= **= /= .= %= &= |= ^= <<= >>= ), хотя and or имеют меньшую точность, чем операторы присваивания. Таким образом, в заявлении, которое сочетает использование присваивания и логической оценки, важно, какой из них вы выберете.

Модифицированные примеры из страницы PHP на логических операциях :

 $e = false || true; 

будет оценивать значение true и присваивать это значение $e , потому что || имеет более высокий приоритет оператора, чем = , и поэтому он, по существу, оценивает следующее:

 $e = (false || true); 

Однако

 $e = false or true; 

присваивает false значение $e (а затем выполняет операцию or операцию и оценивает значение true ), поскольку = имеет более высокий приоритет оператора, чем or , по существу, оценивая следующим образом:

 ($e = false) or true; 

Тот факт, что эта двусмысленность даже существует, позволяет многим программистам всегда использовать && || и тогда все работает ясно, как можно было бы ожидать на языке, таком как C, т.е. сначала логические операции, затем назначение.

Некоторые языки, такие как Perl, используют такую ​​конструкцию часто в формате, подобном этому:

 $connection = database_connect($parameters) or die("Unable to connect to DB."); 

Это теоретически назначало бы подключение к базе данных к $connection , или если это не сработало (и мы предполагаем, что здесь функция вернет то, что в этом случае вернется к false ), это приведет к завершению скрипта сообщением об ошибке. Из-за короткого замыкания, если соединение с базой данных завершается успешно, die() никогда не оценивается.

Некоторые языки, которые допускают эту конструкцию прямо запрещают присвоения в условных / логических операциях (например, Python), чтобы устранить неоднозначность в обратном порядке.

PHP пошел, разрешив оба, так что вам просто нужно узнать о своих двух вариантах один раз, а затем код, как вы хотите, но, надеюсь, вы будете так или иначе последовательны.

Всякий раз, когда вы сомневаетесь, просто добавьте лишний набор круглых скобок, который устраняет всю двусмысленность. Они всегда будут одинаковыми:

 $e = (false || true); $e = (false or true); 

Вооружившись всеми этими знаниями, я предпочитаю использовать and or потому, что чувствую, что он делает код более удобочитаемым. У меня просто есть правило не комбинировать назначения с логическими оценками. Но в этот момент это просто предпочтение, и последовательность важна здесь намного больше, чем какая-то сторона, которую вы выберете.

AND is && и OR is || как в C.

AND и OR являются просто синтаксическим сахаром для && и || , как в JavaScript, или в других языках синтаксиса языка C.

Он появляется AND и OR имеют более низкий приоритет, чем их эквиваленты стиля С.

для И вы используете

 if ($status = 'clear' && $pRent == 0) { mysql_query("UPDATE rent SET dNo = '$id', status = 'clear', colour = '#3C0' WHERE rent.id = $id"); } 

для ИЛИ вы используете

 if ($status = 'clear' || $pRent == 0) { mysql_query("UPDATE rent SET dNo = '$id', status = 'clear', colour = '#3C0' WHERE rent.id = $id"); } 

Я думаю, что у меня немного путаницы здесь. 🙂 Но, похоже, никто другой не имеет ..

Вы спрашиваете, какой из них следует использовать в этом сценарии? Если да, то И это правильный ответ .

Если вы спрашиваете о том, как работают операторы,

В php и AND, && и OR, || будет работать одинаково. Если вы новичок в программировании, а php – один из ваших первых языков, я предлагаю использовать AND и OR, потому что он повышает читаемость и уменьшает путаницу при проверке. Но если вы уже знакомы с любыми другими языками, то вы, возможно, уже знакомы с && и || операторы.

 <?php $val1 = rand(1,4); $val2=rand(1,4); if ($pars[$last0] == "reviews" && $pars[$last] > 0) { echo widget("Bootstrap Theme - Member Profile - Read Review",'',$w[website_id],$w); } else { ?> <div class="w100"> <div style="background:transparent!important;" class="w100 well" id="postreview"> <?php $_GET[user_id] = $user[user_id]; $_GET[member_id] = $_COOKIE[userid]; $_GET[subaction] = "savereview"; $_GET[ip] = $_SERVER[REMOTE_ADDR]; $_GET[httpr] = $_ENV[requesturl]; echo form("member_review","",$w[website_id],$w);?> </div></div> 

ive заменил «else» на «&&», поэтому оба они размещены … argh

«И» не работает в моем PHP-коде.

Возможно, версия сервера?

"&&" работает отлично.