php сравнение переменных if
Урок 5. Условный оператор if, логические операции и сравнение в PHP
Условный оператор if в PHP
Надеюсь логика условной операции понятна. Теперь давайте рассмотрим пример.
Задача: В школе проводят тестирование. Скрипту нужно высчитать балл, зная условия получения каждой оценки и сам балл школьника. Давайте посмотрим как это записать, и не забудьте прочитать комментарий.
Демонстрация Скачать исходники
Наш школьник, который успевает и отдохнуть, и написать нормально тест получает оценку 4! А принцип работы надеюсь понятен.
Возможна и короткая запись работы условной операции, когда Вам нужно действие только в случае соблюдения условия.
Вполне себе милый пример короткой записи условной операции. else писать не обязательно.
Дальше встаёт другой вопрос: а есть же, наверное, какие-либо другие операторы сравнения?
Операторы сравнения в PHP
Принцип работы условной операции понятен. Но, как Вы понимаете, способов сравнить намного больше. Давайте посмотрим ниже на таблицу с операторами сравнения.
Теперь рассмотрим операторы на примерах:
Логические операторы PHP
Бывают случаи, когда нужно сравнить не одну переменную, а сразу две и более в одном условии. Для этого существуют логические операторы.
Уже обратили внимание, что для операций и и или есть дополнительные операторы? Так сделано для того, чтобы расставить приоритеты в сложных операциях сравнения. В таблице логические операторы приведены в порядке приоритета: от меньшего к большему, то есть, например, || имеет больший приоритет, чем or.
Переходим к примерам
Тернарный оператор
К вопросу тернарного кода я предлагаю Вам вернуться позже. Вовсе не упомянуть его я не мог, так как это важная конструкция, которая существенно сокращает размер кода. Предлагаю сразу рассмотреть код.
Таким образом, мы сокращаем запись оператора if. Однако, данная операция действительна только с присваиванием значений переменной. Теперь давайте рассмотрим готовый пример.
Прочитайте комментарии к коду и всё должно быть понятно.
Операторы сравнения
Операторы сравнения, как это видно из их названия, позволяют сравнивать между собой два значения. Возможно вам будет интересно также ознакомиться с разделом Сравнение типов, в котором приведено большое количество соответствующих примеров.
switch ( «a» ) <
case 0 :
echo «0» ;
break;
case «a» : // Эта ветка никогда не будет достигнута, так как «a» уже сопоставленно с 0
echo «a» ;
break;
>
?>
Для различных типов сравнение происходит в соответствии со следующей таблицей (по порядку).
Пример #1 Сравнение булево/null
Пример #2 Алгоритм сравнения обычных массивов
Сравнение чисел с плавающей точкой
Тернарный оператор
Еще одним условным оператором является тернарный оператор «?:».
Пример #3 Присваивание значения по умолчанию
Рекомендуется избегать «нагромождения» тернарных выражений. Поведение PHP неочевидно при использовании нескольких тернарных операторов в одном выражении:
Пример #4 Неочевидное поведение тернарного оператора
// однако, он выводит ‘t’
// это происходит потому, что тернарные выражения вычисляются слева направо
// здесь вы можете видеть, что первое выражение вычисляется в ‘true’, которое
// в свою очередь вычисляется в (bool)true, таким образом возвращая истинную ветвь
// второго тернарного выражения.
?>
PHP занятие 3. Условные операторы
Условные операторы php
Условные операторы php представлены тремя основными конструкциями:
Рассмотрим подробнее каждый из них.
PHP оператор if
Рис 3.1. Условный оператор IF, укороченный вариант
Рис. 3.2. Синтаксис условного оператора IF ELSE
Рис. 3.3. Полный синтаксис условного оператора IF elseif
В условном операторе может использоваться двоеточие : вместо фигурных скобок. В таком случае заканчивается оператор служебным словом endif
Рис. 3.4. Условный оператор If и Endif в php
Пример:
Логические операции в условии
В условии if в скобках могут присутствовать следующие операции:
== | равенство |
!= | неравенство |
> | больше |
меньше | |
>= | больше или равно |
меньше или равно |
Решение:
1 Решение:
2 Решение:
Операции сравнения и правило лжи
В конструкции if в скобках должно находиться логическое выражение или переменная, которые рассматриваются с точки зрения алгебры логики, возвращающая значения либо true либо false
Т.е. в качестве условия может выступать единственная переменная. Рассмотрим пример:
В примере транслятор языка php будет рассматривать переменную в скобках на правило лжи:
Правило ЛЖИ или что считается ложным:
Логические конструкции И ИЛИ и НЕ в условном операторе
$a=1; if (!($a Оператор Switch PHP
Рис. 3.5. Условный оператор Switch
Решение:
Дополните код:
Тернарный оператор PHP
Работа с конструкциями if-else, switch-case в PHP
Учебник PHP
Практика
Важное
Регулярки
Работа с htaccess
Файлы, папки
Сессии и куки
Работа с БД
Практика по работе с БД в PHP
Перед чтением см. новые уроки раздела «Важное», которые появились выше.
Практика
Движок PHP
Продвинутые БД
Аутентификация
Практика
ООП и MVC
Абстрактные классы и интерфейсы
Трейты
ООП Магия
Практика
Практика: классы как набор методов
Конструкция if-else
Для того, чтобы напрограммировать что-нибудь полезное, одних переменных далеко не достаточно. Нам нужен механизм, который позволит выполнять определенный код в зависимости от каких-либо условий.
То есть нам нужно иметь возможность спросить у PHP ‘Если’.
Например так: если эта переменная меньше нуля, то вывести ‘отрицательно’, иначе (то есть если она больше нуля) вывести ‘положительно’.
В PHP для таких вопросов предназначена конструкция if, которая позволяет выполнять определенный код при выполнении какого-либо условия:
Обратите внимание на то, что блок else не обязателен.
Логическое выражение представляет собой тот самый вопрос, который мы хотим задать PHP. Например, чтобы спросить ‘переменная $a больше нуля’ мы напишем так: $a > 0.
Сокращенный синтаксис
В случае, если в фигурный скобках if или else будет только одно выражение, можно эти фигурные скобки не писать:
Равенство по значению и типу
Для того, чтобы сравнить на равенство следует использовать оператор двойное равно ==, а не одиночное =, как можно было подумать.
Почему так? Потому что одиночное равно зарезервировано за присваиванием. Смотрите пример:
А следующий пример работать будет не так, как мы думаем:
Кроме оператора == существует еще и оператор ===. Их различие в том, что === сравнивает не только по значению, но и по типу, а == сравнивает только по значению.
Чтобы полностью разобраться в этом, внимательно изучите примеры:
Не равно
Все операции сравнения
Возможные операции сравнения, которые можно использовать внутри if:
Функция empty
Зачастую в веб-программировании возникает следующая проблема: необходимо проверить переменную на пустоту.
Переменная будет пустая, если она равна нулю, » (пустой строке), false или null (то есть не определена ранее).
Проверка на пустоту выполняется с помощью функции empty():
Функция isset
Аналогом empty является функция isset. Она проверяет существует ли переменная (то есть то, что она не равна null). Смотрите примеры:
Аналогично проверятся на НЕ существование (через !isset):
Несколько условий сразу: or и and
Иногда может быть нужно составить какое-то сложное условие, например, пользователь вводит месяц своего рождения и вам нужно проверить, что введенное число больше или равно 1 и меньше либо равно 12 (так как в году 12 месяцев).
Для этого существуют операторы and (логическое И) и or (логическое ИЛИ).
Работа с логическими переменными
Многие функции PHP в результате своей работы возвращают либо true (истина), либо false (ложь). Эти значения довольно удобны при своей работе, но новичкам бывает довольно сложно понять их.
Представим себе, что переменная $a равна true. В таком случае конструкцию if можно записать так:
Так как такие сравнения довольно распространены в PHP, то существует специальный прием, облегчающий работу (но не понимание, к сожалению).
Прием такой: конструкцию $a == true можно заменить на более простую: вместо if ($a == true) написать if ($a) и она будет работать аналогично.
Следует пользоваться второй конструкцией, так как она проще.
Также обратите внимание на следующие примеры:
Работа вместе с HTML
Однако, очень часто это может оказаться неудобным, особенно если размеры HTML кода очень большие. Поэтому можно воспользоваться следующим приемом с разрывом PHP:
Вложенные if
Одной конструкцией if здесь не обойтись, нужно использовать две таким образом, чтобы одна была внутри другой:
Конструкция elseif
Недостатком конструкции предыдущего примера является большое количество фигурных скобок. Поэтому была изобретена специальная конструкция elseif (пишется слитно!), которая представляет собой одновременно и else, и начало вложенного if:
Можно использовать несколько elseif, но злоупотреблять этим не стоит (лучше будет воспользоваться конструкцией switch-case, о которой ниже).
Несколько if
Решение: можно было бы воспользоваться вложенными ифами или elseif. Выглядело бы это примерно так:
Для таких случаев существует конструкция switch-case.
Конструкция switch-case
Конструкция switch-case представляет собой альтернативу if-else, ее рекомендуется использовать в случае множественного выбора (например, 10 различных языков, как в нашей задаче).
Изучите ее синтаксис:
Решим нашу задачу с тремя языками с помощью данной конструкции:
Что вам делать дальше:
Приступайте к решению задач по следующей ссылке: задачи к уроку.
Условия в PHP
Всем привет! Вот и очередной урок по PHP подоспел. Сегодняшняя тема – одна из самых любимых у тех, кто начинает программировать. Ещё бы, ведь условия в PHP – это то, что позволяет нам составлять различные алгоритмы. Именно в зависимости от условий программа будет вести себя так или иначе. И именно благодаря им мы можем получать разный результат при разных входных данных. В PHP имеются несколько конструкций, с помощью которых можно реализовать условия. Все они используются, и имеют свои преимущества в разных ситуациях, или, если хотите – условиях. Кругом одни условия, не так ли? Так. Никто ведь не будет спорить, что в реальной жизни в зависимости от обстоятельств мы поступаем по-разному. В программировании это не менее важно и сейчас мы этому научимся.
Как вы должны помнить из прошлого урока, в PHP, в зависимости от оператора, операнды приводятся к определённому типу. Для операторов условий в PHP действуют те же правила, и здесь операнд всегда приводится к булевому значению. В случае, если это значение true, то считаем, что условие выполнено, а в случае, если false – то условие не выполнено. В зависимости от того, выполнено ли условие, мы можем делать или не делать какие-либо действия. И тут я предлагаю рассмотреть первый условный оператор – if.
Условный оператор if
Это самый простой, и самый часто используемый оператор. В общем случае конструкция выглядит следующим образом:
А в реальной жизни использование оператора if выглядит следующим образом:
Здесь мы явно передали оператору значение true. Разумеется, это абсолютно бессмысленно. Давайте с помощью условия будем определять числа больше 10. Это довольно просто:
И после запуска мы увидим результат:
Конструкция if-else
Здесь опять же на экран будет выведено сообщение:
Однако если мы изменим входные данные, и переменной $x в самом начале присвоим значение 8, то выведется сообщение:
Попробуйте сделать это прямо сейчас.
Конструкция if-elseif-else: несколько условий
В случае, если вам нужно проверить несколько условий, после оператора if добавляется ещё и оператор elseif. Он проверит условие, только если не выполнится первое условие. Например:
В данном случае, на экран будет выведено:
И да, после этого оператора можно добавить else. Код внутри него будет выполнен, если не выполнилось ни одно из условий:
Результат этого кода, я полагаю, объяснять не нужно. Да, кстати, возможен целый список из elseif-ов. Например, такой:
Приведение к boolean
Помните, в уроке про типы данных в PHP мы с вами научились явно приводить значения к какому-либо типу. Например:
Результатом будет true.
Работающее так же, только неявное преобразование, всегда происходит в условии. Например, следующее условие:
Выполнится успешно, так как число 3 будет преобразовано к true. К false будут приводиться следующие значения:
Таким образом, любое ненулевое число и ненулевая строка будут преобразованы в true и условие выполнится. Исключение – строка, состоящая из одного нуля:
Она также будет преобразована к false.
Я затронул эту тему с приведением к boolean в домашнем задании к этому уроку. Обязательно его выполните. А сейчас давайте перейдём к следующему условному оператору.
Оператор switch
Помимо конструкции if-else есть ещё один оператор условия. Это – switch. Это очень интересный оператор, требующий запоминания нескольких правил. Давайте для начала посмотрим, как он выглядит на следующем примере:
В фигурных скобках мы перечисляем операторы case, после которых указываем значение, с которым сравнивается значение операнда switch. Сравнение происходит нестрогое, то есть как будто используем оператор ==. И если условие выполнилось, то выполняется код, указанный после двоеточия. Если же ни одно из условий не выполнилось, то выполняется код из секции default, которой в общем-то может и не быть, и тогда ничего выполняться не будет. Обратите внимание, внутри каждой секции case, в конце мы прописали оператор break. Это делается для того, чтобы после выполнения кода в случае выполнения условия не продолжилась проверка условий. То есть, если бы не было break в конце секции case 1, то после того, как вывелся бы текст
продолжило бы выполняться условие сравнения с 2, а затем бы выполнился и код в секции default. Не забывайте писать break!
Сравнение switch с if
Вообще, этот код можно было бы записать и с помощью конструкции if-elseif-else:
Но в виде конструкции switch-case код в конкретно этом случае выглядит проще. И вот почему:
И снова про switch
Согласитесь, это может быть удобно.
Хорошо, давайте пройдёмся по особенностям оператора switch, о которых нужно помнить всегда.
Немного практики
Ну что, запомнили операторы условий? Давайте закрепим на практике более реальными примерами.
Чётное или нечётное
Вот один из примеров – нужно определить, чётное ли число или нет. Для этого нам нужно проверить, что остаток от деления на 2 будет равен 0. Подробнее об операторах читайте тут. Давайте сделаем это:
Попробуйте самостоятельно изменить значение переменной $x. Круто, да? Оно работает!
Модуль
Давайте теперь научимся вычислять модуль числа. Если число больше или равно нулю, то нужно вывести само это число, если меньше – заменить знак с минуса на плюс.
Как мы видим, всё успешно отработало.
Тернарный оператор
Помимо этого, в PHP есть ещё один оператор, который представляет собой сокращённую форму конструкции if-else. Это тернарный оператор. При этом он возвращает разные результаты, в зависимости от того, выполнено ли условие или нет. В общем виде его использование выглядит следующим образом:
Или на примере того же нахождения модуля:
Круто, да? Тернарный оператор – очень элегантно вписывается при решении таких вот простеньких задачек.
И ещё немного практики
Условия можно помещать внутрь друг друга и вообще, чего с ними только можно не делать. Например:
Друзья, надеюсь вам понравился урок. Если это так – буду рад, если вы поделитесь им в социальных сетях или расскажете друзьям. Это лучшая поддержка проекта. Спасибо тем, кто это делает. Если у вас возникли какие-то вопросы или замечания – напишите об этом в комментариях. А сейчас – все быстренько делаем домашнее задание, там ещё больше интересных примеров с условиями. Всем пока!