Kwert-soft.ru

IT Софт для ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Php if and or

PHP: Логические операторы

PHP поддерживает стандартные логические операторы AND и && , OR и || , ! (не) и XOR . Логические операторы позволяют сравнивать результаты работы двух операндов (значения или выражения) с целью определения факта возвращения одним из них или обоими значения true или false и выбора соответствующего продолжения выполнения сценария в зависимости от возвращенного значения. Как и операторы сравнения, логические операторы возвращают одно логическое значение — true либо false , в зависимости от значений находящихся по обе стороны от оператора.

Логические операторы

ПримерНазваниеРезультат
$i and $yЛогическое ИTRUE, если оба операнда имеют значение TRUE.
$i or $yЛогическое ИЛИTRUE, если хотя бы один операнд имеет значение TRUE.
$i xor $yИсключающее илиTRUE, если только один из операндов имеет значение TRUE, но не оба.
!$iЛогическое НЕ (Отрицание)TRUE, если операнд имеет значение FALSE, и FALSE, если операнд имеет значение TRUE.
$i && $yЛогическое ИTRUE если и $i, и $y TRUE.
$i || $yЛогическое ИЛИTRUE если или $i, или $y TRUE.

Логическое ИЛИ (OR и ||)

Оператор логическое ИЛИ обозначается как OR или || . Он выполняет операцию «логическое ИЛИ» над двумя операндами. Если один или оба операнда имеют истинное значение, он возвращает true . Если оба операнда имеют ложные значения, он возвращает false . У вас вероятно возник вопрос, зачем же сделали два варианта одного оператора? Смысл двух разных вариантов оператора «логическое ИЛИ» в том, что они работают с различными приоритетами.

Сначала разберем как работает оператор || . И так, если один или оба его операнда имеют истинное значение, он возвращает true . Если оба операнда возвращают ложные значения, он вернет false .

Оператор OR работает также как и оператор || за одним исключением, если оператор OR используется с присваиванием, то сначала он вычислит и вернет значение левого операнда, в остальном он работает точно также как и оператор || , т.е. если один или оба его операнда имеют истинное значение, он возвращает true . Если оба операнда возвращают ложные значения, он вернёт false .

Чтобы стало понятнее, как они работают, приведем следующий пример:

Любые операторы сравнения и логические можно комбинировать в более сложные конструкции:

Стоит упомянуть еще об одном важном моменте, касательно обоих операторов OR и || . Оператор «логическое ИЛИ» начинает свои вычисления со своего левого операнда, если он возвращает true , то правый операнд вычисляться не будет. Это позволяет экономить время исполнения, но нужно внимательно следить за тем, чтобы код, от которого может зависеть корректная работа программы, не был помещен в правый операнд.

Логическое И (AND и &&)

Оператор логическое И обозначается как AND или && . Он выполняет операцию «логическое И» над двумя операндами. Он возвращает true тогда и только тогда, когда оба операнда имеют значение true . Если один или оба операнда возвращают значение false , оператор возвращает false . Смысл двух разных вариантов записи оператора «логическое И» такой же как и у двух предыдущих операторов, а именно в том, что они работают с различными приоритетами.

Сначала разберем как работает оператор && . И так, если оба его операнда имеют истинное значение, он возвращает true . Если хотя бы один или оба его операнда возвращают значение false , он тоже вернет false .

Оператор AND работает также как и оператор && за одним исключением, если оператор AND используется с присваиванием, то сначала он вычислит и вернёт значение левого операнда, в остальном он работает точно также как и оператор && . Если хотя бы один из его операндов возвращает значение false , он тоже вернет false , также если оба операнда возвращают ложные значения, он возвращает false .

Для понимания рассмотрим теперь, как это работает на практике:

Исключающее ИЛИ (XOR)

Оператор исключающее ИЛИ обозначается как XOR . Он возвращает значение true , если один и только один из операндов имеет значение true . Если оба операнда имеют значение true , оператор вернет значение false .

Так как приоритет оператора XOR такой же как и у операторов AND и OR (ниже чем у оператора присваивания), и он используется в выражении с присваиванием, то сначала он вычисляет и возвращает значение левого операнда.

Логическое НЕ (!)

Оператор логическое НЕ , его также называют отрицание обозначается знаком ! . Он является унарным оператором, помещаемым перед одиночным операндом. Оператор «логическое НЕ» используется для инверсии логического значения своего операнда и всегда возвращает true или false .

Если потребуется инвертировать значение выражения, например a && b , необходимо будет использовать круглые скобки: !(a && b) . Также с помощью оператора ! можно преобразовать любое значение x в его логический эквивалент, дважды применив оператор: !!x .

Урок 5. Условный оператор if, логические операции и сравнение в PHP

Условный оператор if в PHP

Главное в действие данное оператора — это условие. if в переводе с английского значит если. Условие принимается в качестве аргумента (то что в скобках). В качестве условия может выступать логическое выражение или логическая переменная. Если проще, то смысл выражения будет такой:

Читать еще:  Http video converter ru download php

Надеюсь логика условной операции понятна. Теперь давайте рассмотрим пример.

Демонстрация Скачать исходники
В итоге скрипт выведет 25 больше 5. Пример довольно прост. Надеюсь всё понятно. Теперь предлагаю рассмотреть ситуацию сложнее, где нужно соблюсти несколько условий. Каждое новое условие будет содержать после основного условия if() — вспомогательное, которое записывается как else if(). В конце как обычно будет else.

Задача: В школе проводят тестирование. Скрипту нужно высчитать балл, зная условия получения каждой оценки и сам балл школьника. Давайте посмотрим как это записать, и не забудьте прочитать комментарий.

Демонстрация Скачать исходники
Наш школьник, который успевает и отдохнуть, и написать нормально тест получает оценку 4! А принцип работы надеюсь понятен.

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

Вполне себе милый пример короткой записи условной операции. else писать не обязательно.

Дальше встаёт другой вопрос: а есть же, наверное, какие-либо другие операторы сравнения?

Операторы сравнения в PHP

Принцип работы условной операции понятен. Но, как Вы понимаете, способов сравнить намного больше. Давайте посмотрим ниже на таблицу с операторами сравнения.

Теперь рассмотрим операторы на примерах:

Логические операторы PHP

Бывают случаи, когда нужно сравнить не одну переменную, а сразу две и более в одном условии. Для этого существуют логические операторы.

Уже обратили внимание, что для операций и и или есть дополнительные операторы? Так сделано для того, чтобы расставить приоритеты в сложных операциях сравнения. В таблице логические операторы приведены в порядке приоритета: от меньшего к большему, то есть, например, || имеет больший приоритет, чем or.

Переходим к примерам

Тернарный оператор

К вопросу тернарного кода я предлагаю Вам вернуться позже. Вовсе не упомянуть его я не мог, так как это важная конструкция, которая существенно сокращает размер кода. Предлагаю сразу рассмотреть код.

Суть кода: (условие) ? значение a если true : значение a если false

Таким образом, мы сокращаем запись оператора if. Однако, данная операция действительна только с присваиванием значений переменной. Теперь давайте рассмотрим готовый пример.

Прочитайте комментарии к коду и всё должно быть понятно.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать еще:  Php параметры запроса

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Условия в PHP

Всем привет! Вот и очередной урок по PHP подоспел. Сегодняшняя тема – одна из самых любимых у тех, кто начинает программировать. Ещё бы, ведь условия в PHP – это то, что позволяет нам составлять различные алгоритмы. Именно в зависимости от условий программа будет вести себя так или иначе. И именно благодаря им мы можем получать разный результат при разных входных данных. В PHP имеются несколько конструкций, с помощью которых можно реализовать условия. Все они используются, и имеют свои преимущества в разных ситуациях, или, если хотите – условиях. Кругом одни условия, не так ли? Так. Никто ведь не будет спорить, что в реальной жизни в зависимости от обстоятельств мы поступаем по-разному. В программировании это не менее важно и сейчас мы этому научимся.

Как вы должны помнить из прошлого урока, в PHP, в зависимости от оператора, операнды приводятся к определённому типу. Для операторов условий в PHP действуют те же правила, и здесь операнд всегда приводится к булевому значению. В случае, если это значение true, то считаем, что условие выполнено, а в случае, если false – то условие не выполнено. В зависимости от того, выполнено ли условие, мы можем делать или не делать какие-либо действия. И тут я предлагаю рассмотреть первый условный оператор – if.

Условный оператор if

Это самый простой, и самый часто используемый оператор. В общем случае конструкция выглядит следующим образом:

А в реальной жизни использование оператора if выглядит следующим образом:

Здесь мы явно передали оператору значение true. Разумеется, это абсолютно бессмысленно. Давайте с помощью условия будем определять числа больше 10. Это довольно просто:

И после запуска мы увидим результат:

Конструкция if-else

А можно ли сделать так, чтобы, когда условие не выполнилось, выполнился другой код? Конечно можно! Для этого вместе с оператором if используют оператор else (по-русски — иначе). Он пишется после фигурных скобок, в которые заключается код, выполняющийся при выполненном условии. И выглядит конструкция следующим образом:

Здесь опять же на экран будет выведено сообщение:

Однако если мы изменим входные данные, и переменной $x в самом начале присвоим значение 8, то выведется сообщение:

Попробуйте сделать это прямо сейчас.

Конструкция if-elseif-else: несколько условий

В случае, если вам нужно проверить несколько условий, после оператора if добавляется ещё и оператор elseif. Он проверит условие, только если не выполнится первое условие. Например:

Читать еще:  Загрузка картинок php

В данном случае, на экран будет выведено:

И да, после этого оператора можно добавить else. Код внутри него будет выполнен, если не выполнилось ни одно из условий:

Результат этого кода, я полагаю, объяснять не нужно. Да, кстати, возможен целый список из elseif-ов. Например, такой:

Приведение к boolean

Помните, в уроке про типы данных в PHP мы с вами научились явно приводить значения к какому-либо типу. Например:

Результатом будет true.
Работающее так же, только неявное преобразование, всегда происходит в условии. Например, следующее условие:

Выполнится успешно, так как число 3 будет преобразовано к true. К false будут приводиться следующие значения:

Таким образом, любое ненулевое число и ненулевая строка будут преобразованы в true и условие выполнится. Исключение – строка, состоящая из одного нуля:

Она также будет преобразована к false.

Я затронул эту тему с приведением к boolean в домашнем задании к этому уроку. Обязательно его выполните. А сейчас давайте перейдём к следующему условному оператору.

Оператор switch

Помимо конструкции if-else есть ещё один оператор условия. Это – switch. Это очень интересный оператор, требующий запоминания нескольких правил. Давайте для начала посмотрим, как он выглядит на следующем примере:

Сначала может показаться, что этот оператор довольно сложный. Однако, если разобраться, то всё становится понятно. В операнде switch указывается некоторое выражение. В нашем случае, это переменная $x, а точнее её значение — 1.

В фигурных скобках мы перечисляем операторы case, после которых указываем значение, с которым сравнивается значение операнда switch. Сравнение происходит нестрогое, то есть как будто используем оператор ==. И если условие выполнилось, то выполняется код, указанный после двоеточия. Если же ни одно из условий не выполнилось, то выполняется код из секции default, которой в общем-то может и не быть, и тогда ничего выполняться не будет. Обратите внимание, внутри каждой секции case, в конце мы прописали оператор break. Это делается для того, чтобы после выполнения кода в случае выполнения условия не продолжилась проверка условий. То есть, если бы не было break в конце секции case 1, то после того, как вывелся бы текст

продолжило бы выполняться условие сравнения с 2, а затем бы выполнился и код в секции default. Не забывайте писать break!

Сравнение switch с if

Вообще, этот код можно было бы записать и с помощью конструкции if-elseif-else:

Но в виде конструкции switch-case код в конкретно этом случае выглядит проще. И вот почему:

  1. мы сразу видим, что конкретно мы сравниваем (переменную $x) и понимаем, что сравниваем в каждом условии именно это значение, а не какое-либо ещё;
  2. глазу удобнее воспринимать то, с чем сравниваем – секции case 1, case 2 визуально воспринимаются легче, сравниваемое значение заметнее.

И снова про switch

И я ещё не всё сказал про switch — можно писать несколько case-ов подряд, тогда код выполнится при условии, что выполнен хотя бы один из них. Например:

Согласитесь, это может быть удобно.

Хорошо, давайте пройдёмся по особенностям оператора switch, о которых нужно помнить всегда.

  1. break прерывает набор условий, не забывайте указывать его;
  2. секция default будет выполнена, если не выполнилось ни одно из условий. Она может и вовсе отсутствовать;
  3. несколько case-ов могуть быть записаны подряд, тогда код в секции выполнится при выполнении хотя бы одного из условий.

Немного практики

Ну что, запомнили операторы условий? Давайте закрепим на практике более реальными примерами.

Чётное или нечётное

Вот один из примеров – нужно определить, чётное ли число или нет. Для этого нам нужно проверить, что остаток от деления на 2 будет равен . Подробнее об операторах читайте тут. Давайте сделаем это:

Попробуйте самостоятельно изменить значение переменной $x. Круто, да? Оно работает!

Модуль

Давайте теперь научимся вычислять модуль числа. Если число больше или равно нулю, то нужно вывести само это число, если меньше – заменить знак с минуса на плюс.

Как мы видим, всё успешно отработало.

Тернарный оператор

Помимо этого, в PHP есть ещё один оператор, который представляет собой сокращённую форму конструкции if-else. Это тернарный оператор. При этом он возвращает разные результаты, в зависимости от того, выполнено ли условие или нет. В общем виде его использование выглядит следующим образом:

Или на примере того же нахождения модуля:

Круто, да? Тернарный оператор – очень элегантно вписывается при решении таких вот простеньких задачек.

И ещё немного практики

Условия можно помещать внутрь друг друга и вообще, чего с ними только можно не делать. Например:

Друзья, надеюсь вам понравился урок. Если это так – буду рад, если вы поделитесь им в социальных сетях или расскажете друзьям. Это лучшая поддержка проекта. Спасибо тем, кто это делает. Если у вас возникли какие-то вопросы или замечания – напишите об этом в комментариях. А сейчас – все быстренько делаем домашнее задание, там ещё больше интересных примеров с условиями. Всем пока!

Ссылка на основную публикацию
Adblock
detector