Условные операторы if else, switch case

Давайте сделаем очередную шпаргалку по основам PHP кратко  законспектируем  условные операторы if else, switch case.

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

if (если) — выполняет определенный код при выполнении какого-либо условия, else (иначе) — выполняет  другой код.
<?php
if (условие) {код (выполниться, если условие верно)}
else  {другой код (выполнится, если условие неверно)}
?>
Блок else не обязателен.

<?php
$a = -3; /*Если  $a больше или равна нулю, вывести ‘верно’ */
if ($a >= 0) {echo ‘Верно!’;}
else {echo ‘Неверно!’;} //иначе вывести’Неверно!’
?>

Если в фигурный скобках if или else будет только одно выражение, можно эти фигурные скобки не писать:

<?php
if ($a == 0) echo ‘Верно!’;
else echo ‘Неверно!’;
?>

Чтобы сравнить на равенство следует использовать оператор «==«, одиночное «=» зарезервировано за присваиванием.

<?php
$a = 0;
if ($a == 0) echo ‘Верно!’;
else echo ‘Неверно!’; //выведет ‘Верно!’
?>

Кроме оператора == существует еще и оператор ===. Их различие в том, что === сравнивает не только по значению, но и по типу.

<?php
$a = ‘0’; //переменная $a является строкой, а не числом 0
if ($a == 0) echo ‘Верно!’;
else echo ‘Неверно!’;
/*
Выведет ‘Верно!’, так как проверяется только значение, но не тип.
Поэтому ‘0’ равен 0.
*/
?>
<?php
$a = ‘0’;
if ($a === 0) echo ‘Верно!’;
else echo ‘Неверно!’;
/* Выведет ‘Неверно!’, так как строка ‘0’ не равна числу 0 при сравнении по типу. */
?>

Для того, чтобы спросить ‘не равно’, существует операторы != и !==. Первый игнорирует различие в типах, а второй — нет.

<?php
$a = 0;
/* Если переменная $a НЕ равна нулю, то выведи ‘верно’,
иначе (если не равна нулю) выведи ‘неверно’*/
if ($a != 0) echo ‘Верно!’; else echo ‘Неверно!’; //выведет ‘Неверно!’, так как $a равно 0
?>

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

Возможные операции сравнения, которые можно использовать внутри if:
$a == $b $a равно $b
$a === $b $a равно $b и они одинаковы по типу
$a != $b $a не равно $b
$a !== $b $a не равно $b или $a равно $b, но ни разные по типу
$a < $b $a меньше $b
$a > $b $a больше $b
$a <= $b $a меньше или равно $b
$a >= $b $a больше или равно $b

Функция empty

Переменная будет пустая, если она равна нулю, » (пустой строке), false или null (то есть не определена ранее). Проверка на пустоту выполняется с помощью функции empty():

<?php
$a = null; //или $a = 0, или $a = ‘ ‘, или $a = false
if (empty($a)) echo ‘Верно!’; //Если $a пустое, то…
else echo ‘Неверно!’; //выведет ‘Верно!’
?>
<?php
$a = null;
if (!empty($a)) echo ‘Верно!’; //Если $a Непустое, то…
else echo ‘Неверно!’; //выведет ‘Неверно!’, так как $a пустое
?>

Функция isset

Аналогом empty является функция isset(). Она проверяет существует ли переменная (то есть то, что она не равна null).

<?php
$a = 0;
if (isset($a)) echo ‘Верно!’; //Если $a существует, то…
else echo ‘Неверно!’;
// Выведет ‘Верно!’, так как $a существует.
?>
<?php
$a = 3;
if (!isset($a)) echo ‘Верно!’; //Если $a НЕ существует то…
else echo ‘Неверно!’;
// Выведет ‘Неверно!’, так как $a существует.
?>

Несколько условий: or и and

Существуют операторы and (логическое И) и or (логическое ИЛИ).

<?php
$a = 3;
$b = -3;
//Если $a больше нуля и $b одновременно меньше нуля то…
if ($a > 0 and $b < 0) echo ‘Верно!’; else echo ‘Неверно!’; //выведет ‘Верно!’

$a = -3;
$b = -3;
if ($a > 0 or $b < 0) echo ‘Верно!’;
/* Если $a больше нуля ИЛИ $b меньше нуля — хотя бы один из них, то вывести ‘Верно!’, так как одно из условий выполнится */
else echo ‘Неверно!’;
?>

Вместо and можно писать &&, а вместо or||.

Логические переменные

Многие функции PHP в результате своей работы возвращают либо true (истина), либо false (ложь).

<?php
$a = true;
if ($a == true) echo ‘Верно!’; //Если $a равно true, то…
else echo ‘Неверно!’;
// Выведет ‘Верно!’, так как $a равно true.
?>

Выражение $a == true можно записать более просто: вместо if ($a == true) написать if ($a).

<?php
$a = true;
if ($a) echo ‘Верно!’; //Если $a равно true, то…
else echo ‘Неверно!’; //выведет ‘Верно!’

$a = true;
if (!$a) echo ‘Верно!’; //Если $a НЕ true (то есть false!), то…
else echo ‘Неверно!’; //выведет ‘Неверно!’
?>

Вставка HTML кода

<?php
$a = true;
if ($a) {
//если $a равно true
echo ‘<p>Здесь выведем какой-то HTML!</p>’;
}
?>

Можно прервать код PHP:

<?php
$a = true;
if ($a) {
/* Мы оборвали PHP, но HTML код ниже
все равно будет виден на экране только если $a равно true. */
?>
<p>Здесь выведем какой-то HTML!</p>
<?php
/* И далее продолжить код PHP, открыв скобку <?php
и закрыть фигурную скобку от ифа. */
}
?>

Вложенные if

<?php
if (empty($a)) { //если переменная $a пуста
echo ‘Введите $a’;
}
else { //если переменная $a НЕ пуста
if ($a > 0) { //спрашиваем, больше ли нуля переменная $a
echo ‘Больше нуля!’;
}
else {
echo ‘Меньше нуля!’;
}
}
?>

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

Чтобы уменьшить количество фигурных скобок, можно применять условный оператор elseif , которая одновременно и else, и начало вложенного if:
Решение предыдущей задачи через конструкцию elseif

<?php
if (empty($a)) {
echo ‘Введите $a!’;
}
elseif ($a > 0) { //одновременно выполняется else для empty($a) и спрашивается больше ли $a нуля
echo ‘Больше нуля!’;
}
else {
echo ‘Меньше нуля!’;
}
?>

Несколько if

Есть такая задача: на сайте необходимы 3 языка — русский, английский, немецкий. Переменная $lang должна принимать 3 значения — ‘ru’, ‘en’ и ‘de’. В зависимости от значения $lang вывести фразу на одном из языков.
Можно воспользоваться вложенными if или elseif.
Решение задачи через elseif – не самое удачное

<?php
if ($a == ‘ru’) {echo ‘Русский текст’;
}
elseif ($a == ‘en’) {echo ‘Английский текст’;
}
elseif ($a == ‘de’) {echo ‘Немецкий текст’;
}
?>

Решение не очень красивое! Проще будет написать не if с несколькими else, а несколько if вообще без else:
Решение задачи через несколько if

<?php
if ($a == ‘ru’) { echo ‘Русский текст’;
}
if ($a == ‘en’) {echo ‘Английский текст’;
}
if ($a == ‘de’) {echo ‘Немецкий текст’;
}
?>

Это решение тоже не слишком удобно, лучше воспользоваться оператором switch-case.

Условный оператор switch-case

Конструкция switch case представляет собой альтернативу if else, ее рекомендуется использовать в случае множественного выбора (например, 10 различных языков, как в нашей задаче).
<?php
switch ($переменная) {
caseзначение1:
код, выполняемый когда переменная принимает значение1;
break;
caseзначение2:
код, выполняемый при значение2;
break;
caseзначение3:
код, выполняемый при значение3;
break;
default:
код выполняемый если переменная не совпала ни с одним значением;
break;
}
?>
Решим задачу с тремя языками с помощью switch case:

<?php
switch ($lang) {
case ‘ru’:
echo ‘Русский текст’;
break;
case ‘en’:
echo ‘Английский текст’;
break;
case ‘de’:
echo ‘Немецкий текст’;
break;
default:
echo ‘Данный язык не поддерживается’;
break;
}
?>

На этом про условный оператор if else и оператор switch case все. Не забудьте повторить прошлую тему «Строковые функции».
Установил на сайт  для подсветки кода — Lite Syntax Highlighting,   удобная штука и код стал более читабельным.

Успехов в учебе!


Рубрики: Основы PHP Тэги: |
Понравилась статья? Поделись!
        

Всего комментариев: 0

Оставить комментарий

Ваш email не будет опубликован.

Вы можете использовать следующие HTML тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>