аватар Автор: Сергей Касаткин | 09 июля 2013 12:53

Уроки / PHP /

Урок 5. Условный оператор if, логические операции и сравнение в PHP

1. Условный оператор if в PHP
2. Операторы сравнения
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 присваивается переданное значение.
}
?>

Прочитайте комментарии к коду и всё должно быть понятно.

Спасибо за внимание!
 



Похожие статьи


Комментарии к статье (vk.com)