• доступно о веб-разработке
08.11.2012 PHP, Технологии

Условные операторы / Неделя PHP

Мы уже более-менее начинаем разбираться с типами данных. Но данные — они только хранят информацию. И для того, чтобы получить нужный результат, ими нужно уметь манипулировать. Выставить логические цепочки. Вот здесь-то на помощь нам и придут условные операторы.

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

Здесь же мы говорим об условных операторах, то есть проверяющих исполнение условий.

Существует два основных условных оператора — if…else и switch.

Давайте рассмотрим их по порядку.

if…else

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

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

<?php

$a = 2;

if($a > 1) {
   echo '$a больше единицы';
}
else {
   echo '$a меньше единицы';
}

Этот пример ясен даже мало знакомому с программированием человеку.

Можно использовать if отдельно, без else.

<?php

$good_weather = TRUE;

if($good_weather){
  smile();
}

Как вы уже поняли, работает этот условный оператор следующим образом. Если выражение условия истинно, то выполняется код в круглых скобках после условия. Если нет — после else.

Если else нет, то ничего не выполняется.

Также можно цепочку удлинить, используя промежуточный оператора elseif.

<?php

$a = 26;

if($a < 30){
    echo '$a меньше 30';
}
elseif($a > 25){
    echo '$a больше 25'
}
else {
    echo '$a больше …';
}

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

Поэтому лучше этот пример будет выглядеть так:

<?php

$a = 26;

if($a < 30){
    echo '$a меньше 30';
}
elseif($a == 30){
    echo '$a равно 30'
}
else {
    echo '$a больше 30';
}

Обратите внимание на оператор сравнения ==.

Очень подробно все расписано в документации к PHP:

Сравнение двух переменных всегда идет через == (сравнение только по значению) или даже через === (сравнения по типу переменной и значению).

Почему? Да потому, что одиночное «равно» («=») — это оператор присваивания.

Если вы напишите $z = 0, то $z присвоится значение 0. А вот если $z == 0, то $z будет сравниваться с 0, и выражение даст результат в виде двоичного ответа TRUE или FALSE(ИСТИНА или ЛОЖЬ).

Запомните сразу же про тройное равно. Дело в том что значения 1 и TRUE, а также 0 и FALSE(и еще NULL) попарно равны между собой.

<?php

$a = 1;
$b = TRUE;
if($a == $b){
 echo '$a равно $b';
}

А вот по типу они разные. Поэтому тройное сравнение даст FALSE на выходе.

<?php

$a = 1;
$b = TRUE;
if($a === $b){
 echo '$a равно $b';
}
else {
 echo '$a не равно $b'; // Это и выведет
}

Это очень важно знать и понимать с самого начала.

Но что делать, если у нас столько вариантов, что if..else будет выглядеть слишком громоздко с кучей ответвлений?

Использовать switch (переключатель)!

switch

<?php
$a = 26.
switch($a){
 case 25:
    echo '$a равно 25';
    break;
 case 26:
    echo '$a равно 26';
    break;
 case 27:
    echo '$a равно 27';
    break;
 default:
    echo 'Значение по умолчанию';
}

Обратите внимание на синтаксис. Каждый случай (case) заканчивается перерывом «break;». Если вы его не укажете, то будет рассмотрен следующий случай. И так до конца.

Последний же, default, есть ни что иное, как значение по умолчанию, когда ни один из указанных случаев не подошел.

Вот так будет понятнее. Управляем роботом:

<?php
$move = 'stand'.
switch($move){
 case 'left':
    echo 'Шагаем налево';
    break;
 case 'right':
    echo 'Шагаем направо';
    break;
 case 'forward':
    echo 'Идем вперёд.';
    break;
 default:
    echo 'Команда не ясна. Ждем следующей команды.';
}

Что будет на экране в результате выполнения этого условного оператора?

Поделиться

Комментарии Правила дискуссии