PHP :: Условные операторы
base06 11
Внимание! Данный урок устарел!Переходите к новому уроку «Условия в PHP».
Двумя основными операторами, обеспечивающими создание структур ветвления на основе условий, являются if и switch. Наиболее широко применяется оператор if, который используется в структурах перехода по условию. С другой стороны, в определенных ситуациях, особенно если приходится обеспечивать переход по одной из многочисленных ветвей в зависимости от значения единственного выражения, а применение целого ряда операторов if приводит к усложнению кода, более удобным становится оператор switch.
Прежде чем изучить эти операторы нужно разобраться в логических выражениях и операциях.
Логические операции
Логические операции позволяют комбинировать логические значения (называемые также истинностными) для получения новых логических значений. Как показано в таблице ниже, в языке PHP поддерживаются стандартные логические операции (and, or, not и xor), причем первые две имеют альтернативные версии.
Операция | Описание |
---|---|
and | Операция, результат которой принимает истинное значение тогда и только тогда, когда оба ее операнда имеют истинное значение |
or | Операция, результат которой принимает истинное значение, если один из ее операндов (или оба операнда) имеет истинное значение |
! | Операция, результат которой принимает истинное значение, если ее единственный операнд (задаваемый справа от знака операции) имеет ложное значение, и ложное значение, если операнд имеет истинное значение |
xor | Операция, результат которой принимает истинное значение, если любой из ее операндов (но не оба одновременно) имеет истинное значение |
&& | То же, что и операция and, но связывает свои операнды сильнее по сравнению с этой операцией |
|| | То же, что и операция or, но связывает свои операнды сильнее по сравнению с этой операцией |
Операции && и || должны быть знакомы программистам, работающим с языком C. Операцию ! обычно называют not, поскольку она становится отрицанием для того операнда, к которому применяется.
Чтобы проверить, имеют ли оба операнда значение TRUE, следует использовать оператор AND, который можно записать и как двойной амперсанд (&&). Оба оператора, AND и &&, являются логическими, их единственное отличие в том, что оператор && имеет более высокий приоритет, чем оператор AND. То же самое относится к операторам OR и ||. Оператор AND возвращает TRUE, только если оба операнда имеют значение TRUE; в противном случае возвращается значение FALSE.
Чтобы проверить, имеет ли хотя бы один операнд значение TRUE, следует использовать оператор OR, который можно записать и как двойную вертикальную линию (||). Этот оператор возвращает TRUE, если хотя бы один из операндов имеет значение TRUE.
При использовании оператора OR в программе могут появиться трудноуловимые логические ошибки. Если PHP обнаружит, что первый операнд имеет значение TRUE, он не станет вычислять значение второго операнда. Это позволяет экономить время исполнения, но вы должны внимательно следить за тем, чтобы код, от которого зависит корректная работа программы, не был помещен во второй операнд.
Проверить, имеет ли значение TRUE только один из операндов (но не оба сразу), позволяет оператор XOR. Этот оператор возвращает значение TRUE, если один и только один из операндов имеет значение TRUE. Если оба операнда имеют значение TRUE, оператор вернет значение FALSE.
Инвертировать логическое значение можно с помощью оператора NOT, который часто записывается и в виде восклицательного знака (!). Он возвращает значение TRUE, если операнд имеет значение FALSE, и значение FALSE, если операнд имеет значение TRUE.
В таблице ниже приведены некоторые логические выражения и их результаты:
Пример логического выражения | Результат |
---|---|
TRUE AND TRUE | TRUE |
FALSE AND TRUE | FALSE |
TRUE OR FALSE | TRUE |
FALSE OR FALSE | FALSE |
TRUE XOR TRUE | FALSE |
TRUE XOR FALSE | TRUE |
!TRUE | FALSE |
!FALSE | TRUE |
Операции сравнения
В таблице ниже показаны операции сравнения, которые могут применяться либо с числами, либо со строками:
Операция | Наименование | |
---|---|---|
== | Равно | Операция, результат которой принимает истинное значение, если ее операнды равны друг другу, в противном случае принимает ложное значение |
!= | Не равно | Операция, результат которой принимает ложное значение, если ее операнды равны друг другу, в противном случае принимает истинное значение |
< | Операция, результат которой принимает истинное значение, если левый операнд меньше правого, в противном случае принимает ложное значение | |
> | Больше | Операция, результат которой принимает истинное значение, если левый операнд больше правого, в противном случае принимает ложное значение |
<= | Меньше или равно | Операция, результат которой принимает истинное значение, если левый операнд меньше или равен правому, в противном случае принимает ложное значение |
>= | Больше или равно | Операция, результат которой принимает истинное значение, если левый операнд больше или равен правому, в противном случае принимает ложное значение |
=== | Идентично | Операция, результат которой принимает истинное значение, если оба операнда равны друг другу и относятся к одному и тому же типу, в противном случае принимает ложное значение |
Необходимо следить за тем, чтобы не допустить одну весьма распространенную ошибку — не путать операцию присваивания (=) с операцией сравнения (==).
Приоритет операций
Безусловно, не следует слишком злоупотреблять стилем программирования, в котором последовательность выполнения операций в основном обусловлена использованием правил приоритета, поскольку код, написанный в таком стиле, является сложным для восприятия теми, кто в дальнейшем будет изучать его, но следует отметить, что операции сравнения имеют более высокий приоритет, чем логические операции. Это означает, что оператор с выражением проверки, подобном приведенному ниже
Код PHP$var1 = 14; $var2 = 15; if (($var1 < $var2) && ($var2 < 20)) echo '$var2 больше $var1 но меньше 20';
можно переписать как
Код PHP...
if ($var1 < $var2 && $var2 < 20)
...
Инструкция if — else
Инструкция if позволяет исполнить блок кода, если условное выражение в этой инструкции имеет значение TRUE; в противном случае блок кода не исполняется. В качестве условия может применяться любое выражение, включающее проверки на ненулевое значение, равенство, NULL с участием переменных и значений, возвращаемых функциями.
Не важно, какие отдельные условные выражения составляют условное предложение. Если условие истинно, исполняется программный код, заключенный в фигурные скобки ({}). В противном случае PHP игнорирует его и переходит к проверке второго условия, проверяя все условные предложения, которые вы записали, пока не наткнется на инструкцию
Синтаксис инструкции if:
if (условное выражение) { блок программного кода; }
Если в результате вычисления условного выражения получается значение TRUE, то блок программного кода, расположенный после него, будет исполнен. В следующем примере если переменная $username имеет значение ‘Admin’, будет выведено приветственное сообщение. В противном случае ничего не произойдет:
Код PHP$username = "Admin";
if ($username == "Admin")
{
echo 'Добро пожаловать на страницу администратора.';
}
Если блок программного кода содержит только одну инструкцию, то фигурные скобки необязательны, тем не менее, хорошая привычка – ставить их всегда, поскольку с ними код легче читается и редактируется.
Необязательная инструкция else – это блок программного кода, исполняемый по умолчанию, когда условное выражение возвращает значение FALSE. Инструкцию else нельзя использовать отдельно от инструкции if, поскольку у else нет собственного условного выражения. То есть else и if в вашем коде всегда должны быть вместе:
Инструкции if и else$username = "no admin";
if ($username == "Admin")
{
echo 'Добро пожаловать на страницу администратора.';
}
else
{
echo 'Добро пожаловать на страницу пользователя.';
}
Не забывайте закрывать фигурной скобкой блок кода в инструкции if, если вы поставили фигурную скобку в начале блока. В блоке else тоже должны быть открывающая и закрывающая фигурные скобки, как в блоке if.
Все это хорошо, кроме случаев, когда вам требуется проверить несколько условий подряд. Для этого подойдет инструкция elseif. Она позволяет проверять дополнительные условия, пока не будет найдено истинное или достигнут блок else. У каждой инструкции elseif есть собственный блок кода, размещаемый непосредственно после условного выражения инструкции elseif. Инструкция elseif идет после инструкции if и перед инструкцией else, если таковая имеется.
Синтаксис инструкции elseif немного сложнее, но следующий пример поможет вам разобраться в нем:
Проверка нескольких условий$username = "Guest";
if ($username == "Admin")
{
echo 'Добро пожаловать на страницу администратора.';
}
elseif ($username == "Guest")
{
echo 'Просмотр не доступен.';
}
else
{
echo 'Добро пожаловать на страницу пользователя.';
}
Здесь проверяется два условия, и, в зависимости от значения переменной $username, выполняются разные действия. И еще есть возможность что-то сделать, если значение переменной отличается от первых двух.
Тернарный оператор ?:
Оператор ?: – это тернарный (трехместный) оператор, который принимает три операнда. Он работает аналогично инструкции if, но возвращает значение одного из двух выражений. Выражение, которое будет вычисляться, определяется условным выражением. Двоеточие (:) служит разделителем выражений:
(условие) ? вычислить_если_условие_истинно : вычислить_если_условие_ложно;
В примере ниже проверяется значение, и в зависимости от его значения (TRUE или FALSE) возвращаются разные строки:
Создание сообщения с помощью оператора ?:$logged_in = TRUE;
$user = "Игорь";
$banner = (!$logged_in) ? "Зарегистрируйтесь!" : "С возвращением, $user!";
echo $banner;
Вполне очевидно, что приведенный выше оператор эквивалентен следующему оператору:
Код PHP$logged_in = TRUE;
$user = "Игорь";
if (!$logged_in)
{
$banner = "Зарегистрируйтесь!";
}
else
{
$banner = "С возвращением, $user!";
}
echo $banner;
Инструкция switch
Инструкция switch сравнивает выражение с несколькими значениями. Как правило, в качестве выражения используется переменная, в зависимости от значения которой должен быть исполнен тот или иной блок кода. Например, представим себе переменную $action, которая может иметь значения «ADD» (добавить), «MODIFY» (изменить) и «DELETE» (удалить). Инструкция switch позволяет легко определить блок кода, который должен исполняться для каждого из этих значений.
Чтобы показать разницу между инструкциями if и switch, выполним проверку переменной на соответствие нескольким значениям. В примере ниже приведен программный код, реализующий такую проверку на базе инструкции if, а в последующем примере – на базе инструкции switch:
Проверка на соответствие одному из нескольких значений (инструкция if)if ($action == "ADD") {
echo "Выполнить добавление.";
echo "Количество инструкций в каждом блоке не ограничено.";
}
elseif ($action == "MODIFY") {
echo "Выполнить изменение.";
}
elseif ($action == "DELETE") {
echo "Выполнить удаление.";
}
Проверка на соответствие одному из нескольких значений (инструкция switch)switch ($action) {
case "ADD":
echo "Выполнить добавление.";
echo "Количество инструкций в каждом блоке не ограничено.";
break;
case "MODIFY":
echo "Выполнить изменение.";
break;
case "DELETE":
echo "Выполнить удаление.";
break;
}
Инструкция switch берет значение, стоящее рядом с ключевым словом switch, и начинает сравнивать его со всеми значениями, стоящими рядом с ключевыми словами case, в порядке их расположения в программе. Если соответствие не найдено, не исполняется ни один из блоков. Как только совпадение обнаружено, выполняется соответствующий блок кода. Расположенные ниже блоки кода также исполняются – до конца инструкции switch или до ключевого слова break. Это удобно для организации процесса, состоящего из нескольких последовательных шагов. Если пользователь уже проделал некоторые шаги, он сможет продолжить процесс с того места, на котором прервался.
Выражение рядом с инструкцией switch должно возвращать значение элементарного типа, например число или строку. Массив можно задействовать только в виде его отдельного элемента, имеющего значение элементарного типа.
Выбор по умолчанию
Если значение условного выражения не совпало ни с одним из предложенных в инструкциях case вариантов, инструкция switch и в этом случае позволяет что-то сделать, примерно как инструкция else конструкции if, elseif, else. Для этого нужно последним вариантом в списке выбора сделать инструкцию default:
Создание сообщения об ошибке с помощью инструкции default$action = "REMOVE";
switch ($action) {
case "ADD":
echo "Выполнить добавление.";
echo "Количество инструкций в каждом блоке не ограничено.";
break;
case "MODIFY":
echo "Выполнить изменение.";
break;
case "DELETE":
echo "Выполнить удаление.";
break;
default:
echo "Ошибка: команда $action не допустима, ".
"можно использовать только команды ADD, MODIFY и DELETE.";
}
Кроме обычного, инструкция switch поддерживает альтернативный синтаксис – конструкцию из ключевых слов switch/endswitch, определяющих начало и конец инструкции вместо фигурных скобок:
Инструкция switch завершается ключевым словом endswitchswitch ($action):
case "ADD":
echo "Выполнить добавление.";
echo "Количество инструкций в каждом блоке не ограничено.";
break;
case "MODIFY":
echo "Выполнить изменение.";
break;
case "DELETE":
echo "Выполнить удаление.";
break;
default:
echo "Ошибка: команда $action не допустима, ".
"можно использовать только команды ADD, MODIFY и DELETE.";
endswitch;
Прерывание исполнения
Если должен быть исполнен только блок кода, соответствующий определенному значению, то в конце этого блока следует вставить ключевое слово break. Интерпретатор PHP, встретив ключевое слово break, перейдет к исполнению строки, расположенной после закрывающей фигурной скобки инструкции switch (или ключевого слова endswitch). Но если не использовать инструкцию break то проверка продолжается в последующих ветвях case конструкции switch. Ниже показан пример:
Что происходит при отсутствии операторов break$action="ASSEMBLE ORDER";
switch ($action) {
case "ASSEMBLE ORDER":
echo "Собрать заказ.<br>";
case "PACKAGE":
echo "Упаковать.<br>";
case "SHIP":
echo "Доставить заказчику.<br>";
}
Если переменная $action будет иметь значение «ASSEMBLE ORDER», результат работы этого фрагмента будет следующим:
Собрать заказ. Упаковать. Доставить заказчику.
Если предположить, что стадия сборки уже была пройдена, и переменная $action имеет значение «PACKAGE», то будет получен следующий результат:
Упаковать. Доставить заказчику.
Иногда, отсутствие операторов break бывает полезным, как в приведенном примере, где формируются стадии заказа, но в большинстве случаев следует использовать этот оператор.
Типы данных Циклы Оценить статью: 12345678910 Меня зовут Александр Ерохин. Это моя домашняя страница: Google+.addphp.ru
Урок 5. Условный оператор if, логические операции и сравнение в PHP
1. Условный оператор if в PHP2. Операторы сравнения
3. Логические операторы в PHP
4. Тернарный оператор
Условный оператор if в PHP
Главное в действие данное оператора — это условие. if в переводе с английского значит если. Условие принимается в качестве аргумента (то что в скобках). В качестве условия может выступать логическое выражение или логическая переменная. Если проще, то смысл выражения будет такой:
if (условие){
условие выполнено, делаем так
}
else
{
условие не выполнено, делаем иначе
}
Надеюсь логика условной операции понятна. Теперь давайте рассмотрим пример.
<?php
$a = 5;
$b = 25;// Теперь внимание! Условие: Если $b больше $a
// Знаки > и < , как и в математике, обозначают больше и меньше
if($b > $a)
{
// если условие выполнено, то выполняем это действие
echo "$b больше $a";
}
else
{
// если не выполнено, то это
echo "$a больше или равно $b";
}
?>
Демонстрация Скачать исходники
В итоге скрипт выведет 25 больше 5. Пример довольно прост. Надеюсь всё понятно. Теперь предлагаю рассмотреть ситуацию сложнее, где нужно соблюсти несколько условий. Каждое новое условие будет содержать после основного условия if() — вспомогательное, которое записывается как else if(). В конце как обычно будет else.
Задача: В школе проводят тестирование. Скрипту нужно высчитать балл, зная условия получения каждой оценки и сам балл школьника. Давайте посмотрим как это записать, и не забудьте прочитать комментарий.
<?php
$test = 82; // допустим школьник написал тест на 82 балла// первое условие напишем для пятёрки
if($test > 90)
{
// если условие соблюдено, то выполняем это действие.
echo "Оценка 5";
}
// Знак && обозначает "и, объединение", что условие соблюдено если и то, и то верно
// то есть балл меньше 91 и больше 80, тогда 4. Иначе условия считываются дальше
else if ($test < 91 && $test > 80)
{
echo "Оценка 4";
}
else if ($test < 81 && $test > 70)
{
echo "Оценка 3";
}
else
{
echo "Надо бы ещё раз написать тест...";
}
?>
Демонстрация Скачать исходники
Наш школьник, который успевает и отдохнуть, и написать нормально тест получает оценку 4! А принцип работы надеюсь понятен.
Возможна и короткая запись работы условной операции, когда Вам нужно действие только в случае соблюдения условия.
$age = 19; // переменная с возрастомif ($age > 17){
echo "Всё! Мне можно делать всё что угодно! Мне уже $age!";
}
Вполне себе милый пример короткой записи условной операции. else писать не обязательно.
Дальше встаёт другой вопрос: а есть же, наверное, какие-либо другие операторы сравнения?
Операторы сравнения в PHP
Принцип работы условной операции понятен. Но, как Вы понимаете, способов сравнить намного больше. Давайте посмотрим ниже на таблицу с операторами сравнения.
Пример Название Результат
$a == $b Равно True, если $a равно $b
$a === $b Идентично True, если $a равно $b и обе переменных принадлежат одному типу
$a != $b Не равно True, если $a не равно $b
$a === $b Не идентично True, если $a не равно $b и оба их типа не совпадают
$a > $b Больше чем True, если $a больше, чем $b
$a < $b Меньше чем True, если $a меньше, чем $b
$a >= $b Больше или равно True, если $a больше или равно $b
$a <= $b Меньше или равно True, если $a меньше или равно $b
Теперь рассмотрим операторы на примерах:
$a = 5;// вопреки привычке = значит присваивание значение переменной, а == как равно
if ($a == 5){
echo "$a равно 5"; // выведет "5 равно 5"
} else {
echo "$a не равно 5";
}if ($a != 6){
echo "$a не равно 6"; // выведет "5 не равно 6". Нужно в случае отрицания
} else {
echo "$a каким-то образом равно 6";
}// с больше и меньше думаю всё понятно. Поэтому пример сложнее
if ($a <= 6){
echo "$a меньше или равно 6"; // выведет "5 меньше или равно 6"
} else {
echo "$a больше 6";
}
Логические операторы PHP
Бывают случаи, когда нужно сравнить не одну переменную, а сразу две и более в одном условии. Для этого существуют логические операторы.
Пример Название Результат
$a and $b Логическое 'и' TRUE если и $a, и $b TRUE.
$a or $b Логическое 'или' TRUE если или $a, или $b TRUE.
$a xor $b Исключающее 'или' TRUE если $a, или $b TRUE, но не оба.
! $a Отрицание TRUE если $a не TRUE.
$a && $b Логическое 'и' TRUE если и $a, и $b TRUE.
$a || $b Логическое 'или' TRUE если или $a, или $b TRUE.
Уже обратили внимание, что для операций и и или есть дополнительные операторы? Так сделано для того, чтобы расставить приоритеты в сложных операциях сравнения. В таблице логические операторы приведены в порядке приоритета: от меньшего к большему, то есть, например, || имеет больший приоритет, чем or.
Переходим к примерам
$a = 5;
$b = 6;
$c = 7;// условие: Если 5 не равно 6 (ВЕРНО) И 6 не равно 7 (ВЕРНО)
if ($a < 6 && $b != $c){
echo "Действительно так!"; // выведет "Действительно так!" т.к. ОБА условия ВЕРНЫ
} else {
echo "Одно из условий не верно";
}// условие: Если 6 не равно 6 (НЕВЕРНО) ИЛИ 6 не равно 7 (ВЕРНО)
if ($b != 6 || $b != $c){
echo "Всё так!"; // выведет "Всё так!", т.к. хотя бы ОДНО из условий ВЕРНО
} else {
echo "Оба условия не верны";
}
Тернарный оператор
К вопросу тернарного кода я предлагаю Вам вернуться позже. Вовсе не упомянуть его я не мог, так как это важная конструкция, которая существенно сокращает размер кода. Предлагаю сразу рассмотреть код.
Суть кода: (условие) ? значение a если true : значение a если false
Таким образом, мы сокращаем запись оператора if. Однако, данная операция действительна только с присваиванием значений переменной. Теперь давайте рассмотрим готовый пример.
<?php
// Пример использования тернарного оператора
$settings = (empty($_POST['settings'])) ? 'По умолчанию' : $_POST['settings'];// Приведенный выше код аналогичен следующему блоку с использованием if/else
if (empty($_POST['settings'])) {
$settings = 'По умолчанию'; // Если ничего не передано, то оставляем "По умолчанию"
} else {
$settings = $_POST['settings']; // Если передано, то $settings присваивается переданное значение.
}
?>
Прочитайте комментарии к коду и всё должно быть понятно.
Спасибо за внимание!
tradebenefit.ru
Условный оператор в PHP
Об условном операторе я уже писал, когда говорил о JavaScript. Разумеется, в PHP также этот оператор существует, и, разумеется, он является наиважнейшим оператором как и, пожалуй, в большинстве языков программирования. И об условном операторе в PHP я и поведаю в этой статье.
Синтаксис условного оператора в PHP такой:
if (условие) {
//Блок операторов
}
else {
//Блок операторов
}
Как видите, синтаксис точно такой же, как и в JavaScript. И вообще этот синтаксис переходит от языка к языку, и он очень удобен, прост и понятен. Однако, если PHP — это Ваш первый язык, то поясняю. Вначале идёт ключевое слово «if«, дальше в круглых скобках задаётся условие (результат которого, разумеется, либо true — истина, либо false — ложь). После условия идут фигурные скобки, в которых идёт блок операторов. И, наконец, необязательный блок else, который будет выполнен, если условие будет ложным (то есть вернёт false). Давайте разберём простейший пример на условный оператор:
<?php
$x = 4;
if ($x > 0)
echo "Число X положительное";
else
if ($x == 0)
echo "Число X равно нулю";
else
echo "Число X отрицательное";
?>
Давайте разберём эту простую задачу. Вначале скрипта объявляется переменная x и присваивается значение «4«. Затем идёт условие, где мы «если переменная x больше нуля» выводим сообщение, иначе (то есть если переменная x НЕ больше нуля) если переменная x равно 0, то выводим сообщение, что «Число X равно нулю«, иначе выводим, что число отрицательное. В общем, я постарался максимально подробно изложить алгоритм этой задачи. Надеюсь, Вы поняли принцип. Возможно, что некоторые из Вас спросят: «А куда делись фигурные скобки?» В данном случае они необязательны, потому что мы используем в каждом блоке всего один оператор (либо один оператор echo, либо один оператор IF). А вот если бы мы использовали два и более оператора, то нам пришлось бы уже ставить фигурные скобки.
И давайте ещё один пример рассмотрим, а, заодно, я познакомлю Вас с очень важной функцией в PHP — isset(), которая проверяет существование переменной и возвращает true, если переменная существует, либо false, если переменная не существует.
<?php
$v = "some";
if (isset($v))
echo "Переменная v существует и её значение - $v";
else
echo "Переменной v не существует.";
if (isset($abcdef)) {
echo "Такая переменная существует!";
echo "Странно... Ведь мы её не объявляли";
}
else
echo "Данной переменной не существует...";
?>
В этом примере мы вновь объявили переменную со строковым значением «some«. Дальше мы проверяем, если такая переменная существует (функция isset()), то сообщаем об этом, а если не существует (то есть функция isset() вернула false), то выводим другое сообщение. Дальше мы пишем ещё один условный оператор, в котором проверяем существование переменной abcdef. Также обратите внимание, что я поставил фигурные скобки, так как в блоке уже два оператора (два echo). Также обратите внимание, что если Вы используете двойные кавычки («), то такие строки «значение — $v» превращаются в «значение — some«, то есть подставляется значение переменной. А если Вы используете одинарные кавычки (‘), то значение переменной не подставляется.
Также бывают сложные условия: с логическим И (&&) и/или логическим ИЛИ (||):
<?php
$ab = 17;
$cd = 19;
$bool = true;
if (($ab - $cd < 0) && ($bool))
echo "Разница переменных меньше нуля и переменная bool = true";
?>
Разумеется, могут быть очень сложные условия с кучей логических И и логических ИЛИ. В общем, думаю, этот пример не нуждается в пояснении. Главное надо понять, что оператор с логическим И вернёт в итоге true только тогда, когда все условия истинны, а если используется логическое ИЛИ, то чтобы вернулось true, необходимо выполнение хотя бы одного из условий. Но и тут важно понимать, что бывают, например, такие условия:
if ((($a > 0) && ($b < 0)) || ($c == 0))
То есть здесь условие вернёт true, если (($a > 0) И ($b <0)) ИЛИ ($c == 0). В общем, надо научиться читать условия, и обращайте внимание на расстановку скобок, так как именно они задают приоритеты выполнения операций. Советую Вам с последним условием поработать. Напишите простой скрипт, присвойте трём переменным значения и посмотрите, что возвращает данное условие. Потом меняйте значениях переменных и следите за изменениями. Так Вы быстрее получите навык чтения сложных условий, а они, поверьте мне, используются очень часто не только в PHP, но и в других языках программирования.
- Создано 02.11.2010 12:33:13
- Михаил Русаков
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
myrusakov.ru
Условный оператор if в PHP и операторы сравнения.
Как и в любом языке программирования, при работе с PHP очень часто приходится обрабатывать различные условные операции.
Например, если выполняется какое-то условие, нужно выполнить какой-то набор действий. Иначе, если выполняется какое-то другое условие, то нужно выполнить какой-то другой набор действий.
Для решения этой задачи: создания таких условных конструкций в PHP есть так называемый условный оператор if.
Давайте сейчас с ним познакомимся.
В языке PHP условный оператор пишется следующим образом.
if (условие) { действие1; действие2; ... } else { действия иначе; }
«действия иначе» выполняются в том случае, если условие для оператора if оказалось ложным.
Задача «условия» возвращать либо истину (true), либо ложь (false).
Давайте напишем простую программу, в которой будут проверяться какие-то условия и в зависимости от них, выполняться какие-то действия.
$a = 1; $b = 5; if ($a < $b) { echo 'a меньше b'; } else { echo 'a больше b'; }
Если выполнить этот код, то мы получим сообщение, что «a меньше b».
Условие else необязательное условие и его может вообще не быть.
Бывают также ситуации, что нужно проверить сразу несколько условий.
$a = 5; $b = 5; if ($a < $b) { echo 'a меньше b'; } else { echo 'a больше b'; }
Если сейчас выполнить такую программу, то мы получим сообщение, что ‘a больше b’. Но, на самом деле у нас a не больше b, а равно b.
Для того, чтобы обработать такое промежуточное условие, есть специальная конструкция else if.
$a = 5; $b = 5; if ($a < $b) { echo 'a меньше b'; } else if($a == $b) { echo 'a равно b'; } else { echo 'a больше b'; }
При выполнении этого кода мы уже получаем сообщение, что ‘a равно b’, что уже соответствует действительности.
Конструкций else if может быть сколько угодно.
Вот такие основы работы с оператором if в PHP. Ничего сложного в этом в PHP нет. Это просто проверка каких-то условий и выполнение каких-то действий, которые соответствуют этому условию.
webkyrs.info
Операторы выбора в PHP. условный оператор (if .. else)
PHP урок № 362Условный оператор if
«Условный» — ключевое слово в описании этого оператора, оно говорит многое о нём. if — значит если. Есть условие при котором будет выполняться следующее действие. Условие это принимается в качестве аргумента для оператора if и может содержать выражение, либо логическую переменную. Если в качестве аргумента для if выступает выражение, то оно должно возвращать логическую переменную. На словах это выглядит запутано, давайте разберём пример работы условного оператора if .
<?php
$a
= 20;
$b = 100;
// Это условие. Если переменна b больше переменной а ...
if($b > $a)
{
// ... то выводим эту запись.
echo "$b больше $a";
}
else
{
//...в противном случаи, выводим эту запись на монитор.
echo "$a больше $b";
}
?>
Если condition истина, то выполняется всегда operator1, в противном случаи, выполняется operator2. Противный случай может быть, в данном примере, только один — это ложь, т.е FALSE
Вторая часть else, может быть не указана, тогда operator1 можно записать без фигурных скобок в одну строку.
<?php
$a
= 5;
if(
$a != 7) echo 'Правильно ' . $a . ' не равно 7'; // Правильно 5 не равно 7
?>
В предыдущих примерах в условии находился один оператор, который и определял дальнейшее выполнение конструкции if. Но если нам потребуется выполнить несколько операторов, в качестве аргумента, то нам потребуется использовать логические операторы для сравнения результата. К примеру логический оператор И, записывается он как && (две амперсанды). Работает он по принципу если правый и левый операнд истины, то всё выражение истинно (true) и наоборот.
<?php
$a
= 5;
$b = 1;
if((
7+3) && false)
{ echo 'всё выражение true';}
else
{echo 'всё выражение false';} // всё выражение false
if( 7+3 && true && 2-1 )
{ echo 'всё выражение true';} // всё выражение true
else
{echo 'всё выражение false';}
if(
7+3 && 0)
{ echo 'всё выражение true';}
else
{echo 'всё выражение false';} // всё выражение false
if(8-9 && 1-3)
{ echo 'всё выражение true';} // всё выражение true
else
{echo 'всё выражение false';}
if(
$a && $b)
{ echo 'всё выражение true';} // всё выражение true
else
{echo 'всё выражение false';}
?>
Существует так же оператор выбора «или». Записывается он так ||. Оператор || (или) возвращает true, при условии, что хотя бы один из операндов равен true. То есть понятна разница, && (и) возвращает true, когда оба операнда true, а || (или), когда хотя бы один операнд равен true.
<?php
$a
= 5;
$b = 1;
if(
$a + $b || $b)
{ echo 'всё выражение true';} // всё выражение true
else
{echo 'всё выражение false';}
if(
$b || false)
{ echo 'всё выражение true';} // всё выражение true
else
{echo 'всё выражение false';}
if(
false || true)
{ echo 'всё выражение true';} // всё выражение true
else
{echo 'всё выражение false';}
if(
false || false)
{ echo 'всё выражение true';}
else
{echo 'всё выражение false';} // всё выражение false
?>
Листинг № 5 — Смешанное применение условных операторов
<?php
$a
= 5;
$b = 1;
if(
$a + $b || $b && true)
{ echo 'всё выражение true';} // всё выражение true
else
{echo 'всё выражение false';}
if(
$a + $b || $b && $b == $a)
{ echo 'всё выражение true';} // всё выражение true
else
{echo 'всё выражение false';}
if((
$a + $b || $b ) && ($b == $a))
{ echo 'всё выражение true';} // всё выражение false
else
{echo 'всё выражение false';}
?>
Применение оператора if одно из самых распространённых в процедурном PHP, т.е. в том который вы сейчас изучаете. С помощью if происходит множественное логическое ветвление работы скрипта. У вас, как бы, есть инструмент, с помощью которого, вы сможете предугадать поведение пользователя и направить ему ответ, либо предложить другой вариант.
<?php
$name
= 'user';
$pass = '123456';
if(
$name == 'user')
{
if($pass == '123456')
{
echo 'Здравствуйте ' . $name . ' вы ввели правильные данные авторизации.';
}
else
{
echo 'Вы ввели не верный пароль.';
}
}
else
{
echo 'Вы ввели не правильное имя, попробуйте ещё раз.';
}
?>
Листинг 6 отработает в true, т.е. вся авторизация пройдёт успешно. Хочу отметить это всего лишь пример, на самом деле авторизация пользователя значительно сложнее и в принципе не так проверяется. Ветвление, то есть вложенность if … else, может быть сколько угодно.
Фигурные скобки в конструкции if … else применять желательно всегда, исключение наверно может быть лишь для одиночной строки, когда не используется часть else. Хотя язык php позволяет писать эту конструкцию и без фигурных скобок, но вероятность ошибки, при таком кодировании, значительно возрастает. К тому же читабельность кода падает.
Дополнительный условный оператор elseif
elseif — существует для проверки множественного условия в операторе if. elseif может быть сколько угодно в конструкции if, но при этом else, может быть только один. Он как правило подводит итог всех условий, и если не одно условие elseif не сработало, то вход вступает else.
Листинг № 7 — Работа конструкции if с дополнительным условным оператором elseif
<?php
$name
= 'user';
$pass = '123456';
$phone = '555';
// Пример 1
if($name == 'user')
{
echo 'Здравствуйте ' . $name ; // Здравствуйте user
}
elseif($pass == '123456')
{
echo 'Вы ввели правильный пароль '.$pass.'.';
}
elseif($phone == '555')
{
echo 'Вы ввели правильный телефон '.$phone.'.';
}
else
{
echo 'Данные не верны!';
}
// Пример 2
if($name != 'user')
{
echo 'Здравствуйте ' . $name ;
}
elseif($pass == '123456')
{
echo 'Вы ввели правильный пароль '.$pass.'.'; // Вы ввели правильный пароль 123456.
}
elseif($phone == '555')
{
echo 'Вы ввели правильный телефон '.$phone.'.';
}
else
{
echo 'Данные не верны!';
}
// Пример 3
if($name != 'user')
{
echo 'Здравствуйте ' . $name ;
}
elseif($pass != '123456')
{
echo 'Вы ввели правильный пароль '.$pass.'.';
}
elseif($phone == '555')
{
echo 'Вы ввели правильный телефон '.$phone.'.'; // Вы ввели правильный телефон 555.
}
else
{
echo 'Данные не верны!';
}
// Пример 4
if($name != 'user')
{
echo 'Здравствуйте ' . $name ;
}
elseif($pass != '123456')
{
echo 'Вы ввели правильный пароль '.$pass.'.';
}
elseif($phone != '555')
{
echo 'Вы ввели правильный телефон '.$phone.'.';
}
else
{
echo 'Данные не верны!'; // Данные не верны!
}
?>
Не рекомендую применять оператор elseif — плохая читабельность кода, запутанность. Если нужно применить условия выбора, лучше использовать оператор выбора switch.
Рекомендованные уроки этого раздела:Комментарии
Руслан 11.06.2013 22:37:07Обьясните пожалуйста Листинг номер 3 . почему выражение истинно или ложно ? что за двойные скобки по бокам и что они дают ? обьясните как происходит присваивание значения в примерах false или true
Oleg 04.07.2013 15:16:15Здравствуйте. Регулярно в логах сервера возникают ошибки в фале роутер. В рнр совершенно не разбираюсь, решил посмотреть уроки, но видимо отсутствие базовых знаний по программированию ни к чему не привели. Сайт на джумле, в свое время убрал id статьи в этом файле, возможно это и приводит к ошибкам. Но, видимо, сам эту проблему не решу. Могли бы вы посмотреть роутер и подсказать. В любом случае, спасибо.
Oleg 05.07.2013 06:46:00Как зарегистрироваться на форуме?
SETTER 05.07.2013 08:14:28Вот по этой ссылке: http://lphp.ru/forum/index.php Там слева вверху, есть ссылка Регистрация.
lphp.ru
Урок 8. PHP — Условный оператор IF
Условный оператор в PHP очень похож на условия в других языках программирования. Но для тех, кто не знаком с ним, картина следующая.
Подумайте о том решении, которое вы принимаете перед тем, как идти спать. Если у вас есть чем заняться на следующий день, скажем, пойти на работу, в школу или университет, то вам нужно завести будильник, чтобы рано проснуться. В противном случае, вы будете спать столько, сколько хотите!
Этот простой вид условия «если, то», который является очень распространенным явлением в повседневной жизни, а также довольно часто появляется в программировании. Всякий раз, когда вы хотите, чтобы решение принималось с учетом каких-то условий (например, вы должны что-то сделать завтра) вы используете условный оператор.
PHP оператор If
Представьте себе, что 1 января вы хотите вывести сообщение «С Новым годом!» в верхней части вашей страницы. С помощью PHP и условного оператора вы могли бы этот процесс автоматизировать за несколько месяцев до 1 января.
Такую динамичность невозможно осуществить на простом HTML.
PHP If Пример
Давайте начнем с основ и рассмотрим простой пример, где мы присвоим переменной значение, а затем, с помощью условия в php мы сравним его с другим значением и выведем результат.
$my_name = "Вася"; if ( $my_name == "Вася" ) { echo "Привет, Вася!<br />"; } echo "Добро пожаловать на мою страницу!";
В результате мы увидим две строки:
Привет, Вася! Добро пожаловать на мою страницу!
Как вы видите, мы сравнивали переменную $my_name со значением «Вася», чтобы увидеть равны ли они. В PHP вы используете двойной знак равенства (==) для сравнения значений. Кроме того, обратите внимание, так как условие оказалось истиной, то кода был выполнен, напечатав «Привет, Вася!». Давайте немного более глубоко разберемся в этом примере.
- Сначала мы присваиваем переменной $my_name значение «Вася».
- Затем мы использовали оператор IF для проверки значения, содержащегося в переменной $my_name. Равно ли оно значению «Вася»?
- Сравнение между $my_name и «Вася» было сделано с помощью двойного знака равенства «==», ни одного равно «=»! Одно равно используется для присвоения значения переменной, в то время как двойное равно для проверки.
- $my_name действительно равна «Вася», так что echo выполняется.
If…else
С простым условием разобрались. Но иногда возникает необходимость выполнить условие, если оно истинно и выполнить другое действие, если ложно! Например, если я завтра иду в университет, то мне нужно встать в 7 часов, иначе я пойду играть в футбол с друзьями с 9 часов. Здесь нам на помощь придет все тот же условный оператор, но с небольшим дополнением.
$go_to_universe = 1; if ( $go_to_universe == 1 ) { echo "Иду в универ, будильник на 7 часов"; } else { echo "Не иду в универ, будильник на 9 часов"; }
В данном случае, если переменная $go_to_universe принимает значение 1, то мы идем в универ и заводим будильник на 7 утра, иначе (else) не идем в универ и заводим на 9. Все достаточно просто.
Запомните, сначала пишем оператор if, затем в круглых скобках условие, в фигурных скобках действие, если условие истинно, затем слово else и снова в фигурных скобках действие, но уже которое будет выполняться, если усновие ложно.
if ( условие ) { действие при истинном условии; } else { действие при ложном условии; }
Разобрались? тогда двигаемся дальше!
← Include | Содержание | Switch →
myblaze.ru
Условные операторы PHP на видеокурсе от Loftblog
И снова мы с вами, а вы с нами на очередном видеоуроке курса по основам PHP! Сегодня мы поговорим об условном операторе PHP if/else.
Условный оператор PHP if/else
Условный оператор PHP if/else применяют, когда нужно выполнить те или иные действия, исходя из определенных условий. Рассмотрим такой пример: если условие «погода солнечная» выполнено, то выведется сообщение «пойду на пляж», а если нет – «пойду к подруге».
<?php $yslovie = “солнечно”; if($yslovie == “солнечно”) { echo “Пойду на пляж”; } else { echo “Пойду к подруге”; } ?>
<?php $yslovie = “солнечно”; if($yslovie == “солнечно”) { echo “Пойду на пляж”; } else { echo “Пойду к подруге”; } ?> |
Вывод: Пойду на пляж
Поменяем значение переменной yslovie:
$yslovie = “пасмурно”;
Вывод: Пойду к подруге
Если необходимо, чтобы условие выполнялось исходя из нескольких условий, можно использовать, например, условный оператор PHP ‘И’ (&&). Добавим еще одну переменную для примера:
<?php $yslovie = “солнечно”; $yslovie2 = “я здоров”; if($yslovie == “солнечно” && $yslovie2 == “я здоров”) { echo “Пойду на пляж”; } else { echo “Останусь дома”; } ?>
<?php $yslovie = “солнечно”; $yslovie2 = “я здоров”; if($yslovie == “солнечно” && $yslovie2 == “я здоров”) { echo “Пойду на пляж”; } else { echo “Останусь дома”; } ?> |
Вывод: Пойду на пляж
Если опять же поменять переменную yslovie на «пасмурно», то:
$yslovie = “пасмурно”;
Вывод: Останусь дома
Еще вместо оператора И (&&), можно использовать условный оператор PHP ‘ИЛИ’ || (or), который говорит о том, что хотя бы одно из условий должно быть выполнено.
Условный оператор PHP else if
Теперь поставим задачу другим образом. Мы, кроме прежних условий, хотим пойти в кино с другом, если он придет к нам. В этом случае нам понадобится добавить еще одно условие с помощью условного оператора PHP else if:
<?php $yslovie = “пасмурно”; $yslovie2 = “я здоров”; $yslovie3 = “пришел друг”; if($yslovie == “солнечно” && $yslovie2 == “я здоров”) { echo “Пойду на пляж”; } else if($yslovie3 == “пришел друг”) { echo “пойду с другом в кино”; } else { echo “Останусь дома”; } ?>
<?php $yslovie = “пасмурно”; $yslovie2 = “я здоров”; $yslovie3 = “пришел друг”; if($yslovie == “солнечно” && $yslovie2 == “я здоров”) { echo “Пойду на пляж”; } else if($yslovie3 == “пришел друг”) { echo “пойду с другом в кино”; } else { echo “Останусь дома”; } ?> |
Вывод: пойду с другом в кино
Более подробную информацию об условных операторах PHP вы можете найти на данной странице
Это все, о чем вы узнаете на сегодняшнем видеоуроке. До новых встреч на следующем, ваш LoftBlog!
Рекомендуемые курсы
loftblog.ru