Немного о компьютере

Php условный оператор. Условия в PHP. Пишем сценарий для кнопки с помощью условных операторов

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

Синтаксис конструкции if аналогичен конструкции if в языке Си:

if (логическое выражение) оператор;
?>

Согласно выражениям PHP, конструкция if содержит логическое выражение. Если логическое выражение истинно (true ), то оператор, следующий за конструкцией if будет исполнен, а если логическое выражение ложно (false ), то следующий за if оператор исполнен не будет. Приведем примеры:

if ($a > $b ) echo "значение a больше, чем b" ;
?>

В следующем примере если переменная $a не равна нулю, будет выведена строка "значение a истинно (true)":

if ($a ) echo "значение a истинно (true) " ;
?>

В следующем примере если переменная $a равна нулю, будет выведена строка "значение a ложно (false)":

if (!$a ) echo "значение a ложно (false) " ;
?>

Часто вам будет необходим блок операторов, который будет выполняться при определенном условном критерии, тогда эти операторы необходимо поместить в фигурные скобки {...} Пример:

if ($a > $b ) {
echo "a больше b" ;
$b = $a ;
}
?>

Приведенный пример выведет сообщение, "a больше b", если $a > $b , а затем переменная $a будет приравнена к переменной $b . Заметим, что данные операторы выполняются в if .

if (логическое_выражение):
команды;
elseif(другое_логическое_выражение):
другие_команды;
else:
иначе_команды;
endif

Обратите внимание на расположение двоеточия (: )! Если его пропустить, будет сгенерировано сообщение об ошибке. И еще: как обычно, блоки elseif и else можно опускать.

Конструкция elseif

elseif - это комбинация конструкций if и else . Эта конструкция расширяет условную конструкцию if-else .

Приведем синтаксис конструкции elseif :

if (логическое_выражение_1)
оператор_1;
elseif (логическое_выражение_2)
оператор_2;
else
оператор_3;

Практический пример использования конструкции elseif :

if ($a > $b ) {
echo "a больше, чем b" ;
} elseif ($a == $b ) {
echo "a равен b" ;
} else {
echo "a меньше, чем b" ;
}
?>

12.09.2017

Пока нет


Всем привет!
Продолжаем изучать основы PHP с нуля!
В этом уроке я расскажу вам об операторе условий if else . В буквальном переводе if означаете «если », а else – «иначе ». Сама конструкция if else помогает сверять данные и выводить результат (выводить сообщения, выполнять какую-то команду, перенаправлять пользователя на секретную страницу или впускать в админ-панель). Чтобы научиться писать правильно условия и понять конструкцию if else, я наведу жизненный пример, который очень похож на конструкцию if else.
Вы даете своему мозгу команду: как только звучит будильник (6:00), я должен встать, умыться, почистить зубы, одеться и галопом бежать на работу. Если будильник не звонит в 6:00, значит можно спать, так как на работу бежать не нужно.
Вы заметили конструкцию if else? Условием будет установленное время будильника «6:00». Если будильник звонит, то встаем и бежим на работу, если не звонит (иначе, еще говорят ложь), значит, спим дальше.
Таких примеров жизненных можно навести массу, например: если идет дождь, то сижу дома, если нет дождя, тогда беру мяч и иду играть футбол.
Итак, как же можно записать конструкцию if else ? Очень просто.
Пойдем поэтапно и начнем с простого условия – оператор if.

Для лучшего понимания я изобразил схему конструкции if в виде рисунка:

Теперь попробуем трансформировать жизненный пример, который я навел выше, в код php.

Если вы сохраните php файл с этим кодом и откроете его через локальный сервер (см. ), то в результате получится:

⇒ Разъяснение кода:
В условии я сравнил переменную $weather со значением "дождь " (строка №3). Человеческим языком этот код звучит так: если переменная $weather равна значению "дождь ", тогда выводить нужно текст "Я сижу дома ". Кстати, напомню вам (если подзабыли ), что знак равенства обозначается двойным знаком «равно», вот так (== ). Если к переменной $weather написать другое значение (строка №2), например, снег, тогда в браузере будет пустая страничка, так как условия не были соблюдены.

→ КОД-ШАБЛОН "КОНСТРУКЦИЯ if":

→ Шпаргалка:

Равенство: ==
Пример: if ($a == $b)

Не равенство: !=
Пример: if ($a != $b)

Больше: >
Пример: if ($a > $b)

Меньше: <
Пример: if ($a < $b)

Больше или равно: >=
Пример: if ($a >= $b)

Меньше или равно: <=
Пример: if ($a <= $b)

Логическое «и»: and
Пример: if ($a ==$b and $c !=$d)

Логическое «или»: or , ||
Пример: if ($a ==$b || $c !=$d)

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

Теперь схему переведем в реальный код:

Результат:

Я беру мяч и иду играть в футбол

⇒ Разъяснение кода:
В условии я сравнил переменную $weather со значением "дождь " (строка №3), но так как переменной $weather я присвоил значение "солнце " (строка №2), то условие не было соблюдено (значения не одинаковы), а это значит, что будет работать вторая часть кода (else):

Else { echo "Я беру мяч и иду играть в футбол"; //результат если условие не верно }

→ КОД-ШАБЛОН "КОНСТРУКЦИЯ if-else":

Двойное условие if-else

Переходим к более сложному – двойное условие if-else .
Давайте на примере создадим проверку пароля и логина.

Цель:
Создать условие проверки логина и пароля. Если пароль или логин не совпадают, вывести сообщение об ошибке.

Приступим.
Создадим для начала две переменные $logo и $password с соответствующими значениями:

Обратите внимание, в условии мы разделили две переменные оператором "AND ". Это означает, что две переменные должны быть правильными для выполнения условия, но так как у нас в условии не совпадает пароль (стока№4), значит, условие неверное и на экране вы увидите вот такое сообщение:

Логин или пароль не верный

Если поменяете значение переменной $password на "123 " (строка №3), тогда условия будут полностью соблюдены (строка №4):

Результат:

добро пожаловать в админ-панель

Вложенные конструкции if-else

Вложенная конструкция – это когда внутри конструкции находится еще одна конструкция. Не совсем понятно объяснил? Не беда, на примере все поймете.

Цель:
Создать условие проверки логина и пароля. Если пароль или логин не совпадают, вывести сообщение об ошибке, если совпадают, тогда еще проверить секретное слово, если секретное слово не совпадает, вывести сообщение об ошибке, если совпадает, тогда вывести сообщение "добро пожаловать в админ-панель ".

Приступим:

Создадим для начала три переменные, $logo , $password и $x с соответствующими значениями:

Теперь создадим двойное условие для проверки переменных $logo и $password :

Теперь под комментарием " // тут будет еще одно условие с секретным словом " (строка №7) пропишите еще одну конструкцию if-else с условием проверки переменной $x :

Так как секретное слово неверное (строка №8), то на экране будет сообщение:

секретное слово неверное

Если вы замените значение переменной $x на "BlogGOOD ", тогда и секретное слово будет правдивым:

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

добро пожаловать в админ-панель

→ КОД-ШАБЛОН "ВЛОЖЕННАЯ КОНСТРУКЦИЯ if-else":

Оператор условия elseif

Конструкция elseif - это комбинация конструкций if и else, которая поможет проверить несколько условий подряд.

Синтаксис:

Заметьте, в строках №6 и №10 специально два слова написаны вместе «elseif», если вы их разделите пробелом «else if», то код выдаст ошибку.

Давайте приведу рабочий код с выбором учебника по программированию.

Результат:

Вы заказали учебник по PHP

Способ elseif можно записать так же и вложенной конструкцией if else :

Результат такой же, вот только запутаться легче (я 2 раза запутался в своем же коде) .

Дополнение к уроку (пока знать не обязательно):

Есть еще несколько вариантов, как можно записывать конструкцию if else (альтернативный синтаксис ).
Про альтернативный синтаксис я подготовлю целый урок, где все растолкую и покажу. Сейчас просто пробежитесь глазами.
Код №1:

Переменная "$а" содержит значение 15

Домашнее задание:
Попробуйте в условии вместо равенства (== ) поставить неравенство (!= ) или попробовать со знаками больше меньше:

а также замените оператор "AND " на "OR ".

Все, жду вас на следующих уроках! Подписывайтесь на обновления блога!

Предыдущая запись
Следующая запись

Последнее обновление: 1.11.2015

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

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

Конструкция if (условие) проверяет истинность некоторого условия, и если оно окажется истинным, то выполняется блок выражений, стоящих после if. Если же условие ложно, то есть равно false, тогда блок if не выполняется. Например:

0) { $result= $a * $b; echo "результат равен: $result
"; } echo "конец выполнения программы"; ?>

Блок выражений ограничивается фигурными скобками. И так как в данном случае условие истинно (то есть равно true): значение переменной $a больше 0, то блок инструкций в фигурных скобках также будет выполняться. Если бы значение $a было бы меньше 0, то блок if не выполнялся.

Если блок if содержит всего одну инструкцию, то можно опустить фигурные скобки:

0) echo $a * $b; echo "
конец выполнения программы"; ?>

Можно в одной строке поместить всю конструкцию:

If($a>0) echo $a * $b;

В данном случае к блоку if относится только инструкция echo $a * $b;

else

Блок else содержит инструкции, которые выполняются, если условие после if ложно, то есть равно false:

0) { echo $a * $b; } else { echo $a / $b; } echo "
конец выполнения программы"; ?>

Если $a больше 0, то выполняется блок if, если нет, то выполняется блок else.

Поскольку здесь в обоих блоках по одной инструкции, также можно было не использовать фигурные скобки для определения блоков:

If($a>0) echo $a * $b; else echo $a / $b;

elseif

Конструкция elseif вводит дополнительные условия в программу:

$a = 5; $b = 2; if($a<0) { echo $a * $b; } elseif($a==0) { echo $a + $b; } elseif($a==5) { echo $a - $b; } else { echo $a / $b; }

Можно добавить множество блоков elseif . И если ни одно из условий в if или elseif не выполняется, тогда срабатывает блок else.

Конструкция switch..case

Конструкция switch..case является альтернативой использованию конструкции if..elseif..else . Например:

$a = 1; if($a==1) echo "сложение"; elseif($a==2) echo "вычитание"; elseif($a==3) echo "умножение"; elseif($a==4) echo "деление";

Будет эквивалентно:

$a = 1; switch($a) { case 1: echo "сложение"; break; case 2: echo "вычитание"; break; case 3: echo "умножение"; break; case 4: echo "деление"; break; }

После ключевого слова switch в скобках идет сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями, помещенными после оператора сase. И если совпадение будет найдено, то будет выполняться определенный блок сase.

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

Если мы хотим также обработать ситуацию, когда совпадения не будет найдено, то можно добавить блок default:

$a = 1; switch($a) { case 1: echo "сложение"; break; case 2: echo "вычитание"; break; default: echo "действие по умолчанию"; break; }

Тернарная операция

Тернарная операция состоит из трех операндов и имеет следующее определение: [первый операнд - условие] ? [второй операнд] : [третий операнд] . В зависимости от условия тернарная операция возвращает второй или третий операнд: если условие равно true , то возвращается второй операнд; если условие равно false , то третий. Например:

$a = 1; $b = 2; $z = $a < $b ? $a + $b: $a - $b; echo $z;

Если значение переменной $a меньше $b и условие истинно, то переменная $z будет равняться $a + $b . Иначе значение $z будет равняться $a - $b

Этот урок немножко посложней, чем предыдущий, но не стоит бояться, вы должны перейти на уровень выше в познании PHP. В этой статье речь пойдет о конструкции, которая состоит из нескольких условий. Продолжаем изучать оператора условий if-else для PHP.

Прежде чем мы приступим к продолжению изучения оператора if-else , убедительно рекомендую посмотреть знаки, которые используются в условиях if . Запомните их или запишите:

Равенство: ==
Пример: if ($a == $b)

Не равенство: !=
Пример: if ($a != $b)

Больше: >
Пример: if ($a > $b)

Меньше: <
Пример: if ($a < $b)

Больше или равно: >=
Пример: if ($a >= $b)

Меньше или равно: <=
Пример: if ($a <= $b)

Логическое «и»: and
Пример: if ($a ==$b and $c !=$d)

Логическое «или»: or , ||
Пример: if ($a ==$b || $c !=$d)

Вот теперь продолжим.

Двойное условие if-else

Где можно его применить? Когда я создавал для одного сайта админ-панель, то использовал двойное условие для проверки логина и пароля.
Чтобы создать двойное условие, нужно добавить еще две переменные, например: $k = 55; $n = 88.
Это будет выглядеть вот так:

if ($a != $b and $k != $n)

and – вы уже знаете, что это означает логическое «и ».

Как это будет выглядеть в PHP-коде:

основы php на сайт

Разъяснение:
Смотрите, в условии мы указали, что если переменные $a с $b равны ($a == $b) и переменные $k с $n не равны ($k != $n) , условие будет считаться правильным. А если условие правильное, значит, будет работать эта часть кода:

{
echo "Все ОK:)";
}

Введите в браузере адрес:

Результат:

Если значение переменой $a поменять на противоположное значение переменной $b , то условие будет невыполнимо! Почему? Да потому, что переменные ($a == $b) не равны между собой. Если условие не выполнено, будет работать другая часть кода:

else
{
echo "Не все ОК: (";
}

Как это выглядит в PHP-коде:

основы php на сайт

Сохраните код PHP как «if-else.php » в папку «test-1 » локального сервера (см. урок 1).

Введите в браузере адрес:

https://localhost/test-1/if-else.php

Результат:

Вложенные конструкции if-else .

Что называют вложенными конструкциями if-else ? Это такие конструкции, которые состоят из нескольких условий.

Теперь рассмотрим вложенные конструкции if-else . Такие конструкции могут состоять из нескольких условий в выполняемых правилах. Для примера добавим еще две переменные $familiya1 и $familiya2 :

$familiya1 =" ivanov ";
$familiya2 =" sidarov ";

Как это выглядит в PHP-коде:

основы php на сайт В переменных familiya1 и familiya2 содержатся разные фамилии."; } else { echo "Не так все плохо, как вам кажется:(
В переменных familiya1 и familiya2 содержатся одинаковые фамилии."; } } else { echo "Не все ОК:("; } ?>

Разъяснение:
Смотрите, здесь были выполнены все условия

If ($a == $b and $k != $n)

Переменная $a равная с переменной $b и переменная $k не равная с $n . Здесь условия были выполнены, а это значит, что будет работать эта часть кода:

if ($familiya1 != $familiya2)
{
echo " Все ОK:)
";
}

Так как переменные $familiya1 и $familiya2 между собой не равны и это правда,

$familiya1="ivanov ";
$familiya2="sidarov ";

то будет работать вот эта часть кода:

{
echo " Все ОK:)
В переменных familiya1 и familiya2 содержатся разные фамилии. ";
}

Смотрим результат! Сохраните код PHP как «if-else.php » в папку «test-1 » локального сервера (см. урок 1).

Введите в браузере адрес:

https://localhost/test-1/if-else.php

Результат:

Если в переменных $familiya1 и $familiya2 сделать значение одинаковыми:

$familiya1="sidarov ";
$familiya2="sidarov ";

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

if ($familiya1 != $familiya2)

Вот по этой причине будет работать вот эта часть кода:

Else
{
echo " Не так все плохо, как вам кажется: (

В переменных familiya1 и familiya2 содержатся одинаковые фамилии. ";
}

В результате на мониторе вы увидите картинку:

Вот мы и закончили полностью тему «Оператор условия if-else для PHP ». Чтобы закрепить «Урок 5» и «Урок 6», рекомендую самостоятельно поработать над созданием собственных условий.

А я пойду готовить для вас новые уроки по основам PHP. Подписывайтесь на обновления блога, если не хотите пропустить уроки по PHP.
Всего хорошего!

Двумя основными операторами, обеспечивающими создание структур ветвления на основе условий, являются if и switch. Наиболее широко применяется оператор if, который используется в структурах перехода по условию. С другой стороны, в определенных ситуациях, особенно если приходится обеспечивать переход по одной из многочисленных ветвей в зависимости от значения единственного выражения, а применение целого ряда операторов if приводит к усложнению кода, более удобным становится оператор switch.

Прежде чем изучить эти операторы нужно разобраться в логических выражениях и операциях.

Логические операции

Логические операции позволяют комбинировать логические значения (называемые также истинностными) для получения новых логических значений. Как показано в таблице ниже, в языке PHP поддерживаются стандартные логические операции (and, or, not и xor), причем первые две имеют альтернативные версии.

Логические операции PHP
Операция Описание
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.

В таблице ниже приведены некоторые логические выражения и их результаты:

Операции сравнения

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

Операции сравнения
Операция Наименование Описание
== Равно Операция, результат которой принимает истинное значение, если ее операнды равны друг другу, в противном случае принимает ложное значение
!= Не равно Операция, результат которой принимает ложное значение, если ее операнды равны друг другу, в противном случае принимает истинное значение
< Меньше Операция, результат которой принимает истинное значение, если левый операнд меньше правого, в противном случае принимает ложное значение
> Больше Операция, результат которой принимает истинное значение, если левый операнд больше правого, в противном случае принимает ложное значение
<= Меньше или равно Операция, результат которой принимает истинное значение, если левый операнд меньше или равен правому, в противном случае принимает ложное значение
>= Больше или равно Операция, результат которой принимает истинное значение, если левый операнд больше или равен правому, в противном случае принимает ложное значение
=== Идентично Операция, результат которой принимает истинное значение, если оба операнда равны друг другу и относятся к одному и тому же типу, в противном случае принимает ложное значение

Необходимо следить за тем, чтобы не допустить одну весьма распространенную ошибку - не путать операцию присваивания (=) с операцией сравнения (==).

Приоритет операций

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

Код 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 игнорирует его и переходит к проверке второго условия, проверяя все условные предложения, которые вы записали, пока не наткнется на инструкцию else , после чего автоматически выполнит этот блок. Инструкция else не является обязательной .

Синтаксис инструкции 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 завершается ключевым словом endswitch switch ($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 "Собрать заказ.
"; case "PACKAGE": echo "Упаковать.
"; case "SHIP": echo "Доставить заказчику.
"; }

Если переменная $action будет иметь значение "ASSEMBLE ORDER", результат работы этого фрагмента будет следующим:

Собрать заказ. Упаковать. Доставить заказчику.

Если предположить, что стадия сборки уже была пройдена, и переменная $action имеет значение "PACKAGE", то будет получен следующий результат:

Упаковать. Доставить заказчику.

Иногда, отсутствие операторов break бывает полезным, как в приведенном примере, где формируются стадии заказа, но в большинстве случаев следует использовать этот оператор.

Типы данных Циклы 1 2 3 4 5 6 7 8 9 10

Похожие публикации