/
Программирование
/
Курс PHP
/

Условная конструкция (if)

PHP: Условная конструкция (if)

Логические выражения позволяют проверять разные условия. Но сами по себе они лишь возвращают true или false. Чтобы программа могла выполнять разные действия в зависимости от результата, в PHP есть специальная конструкция if:

<?php

if (5 > 3) {
    print_r('Yes, it is true');
}

Здесь строка 'Yes, it is true' напечатается, потому что условие 5 > 3 истинно.

┌───────────┐
│ условие?  │
└─────┬─────┘
 true │
      ↓
┌───────────┐
│ тело if   │
└───────────┘

Блоки кода

После слова if в круглых скобках пишется условие, а затем в фигурных скобках описывается блок кода. Все инструкции внутри фигурных скобок входят в один блок:

<?php

if (10 === 10) {
    print_r("First\n");
    print_r("Second\n");
}

print_r('Goodbye!');

Здесь напечатаются First и Second, потому что условие выполнилось. А Goodbye! напечатается в любом случае, так как эта инструкция уже за пределами блока. Принцип такой же, как и в определении функций.

Использование if внутри функции

Рассмотрим функцию, которая определяет тип переданного предложения. Если оно оканчивается на знак вопроса, функция вернет 'question', иначе вернет 'normal':

<?php

function getTypeOfSentence(string $sentence): string
{
    // Простой способ извлечь последний символ
    $lastChar = $sentence[-1];

    if ($lastChar === '?') {
        return 'question';
    }

    return 'normal';
}

print_r(getTypeOfSentence('Hodor') . "\n");  // => normal
print_r(getTypeOfSentence('Hodor?') . "\n"); // => question

Здесь используется сразу два return. Если условие внутри if выполняется, срабатывает return 'question'; и функция завершается. Если условие не выполняется, управление переходит на следующую строку с return 'normal';.

Таким образом, у функции есть несколько возможных точек выхода. Это частая практика. В зависимости от условий функция может завершаться по-разному.

Несмотря на то, что функция getTypeOfSentence() использует if, она возвращает строки, а значит, предикатом не является. В качестве предиката рассмотрим функцию, которая проверяет, достаточно ли денег для покупки:

<?php

function hasEnoughMoney(int $balance, int $price): bool
{
    if ($balance >= $price) {
        return true;
    }

    return false;
}

var_dump(hasEnoughMoney(100, 50)); // => bool(true)
var_dump(hasEnoughMoney(30, 50));  // => bool(false)

if и логические выражения

Функцию hasEnoughMoney() мы написали через if. Но в таком виде она могла бы обойтись и без него, потому что результат сравнения сам по себе уже является логическим выражением:

<?php

function hasEnoughMoney(int $balance, int $price): bool
{
    return $balance >= $price;
}

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

Задание

В викторине загадано число 42. Участник называет число, и программа сразу говорит — угадал он или нет. Реализуйте функцию guessNumber(), которая принимает число и проверяет, равно ли оно 42. Если равно — возвращает 'You win!', иначе — 'Try again!'.

<?php

guessNumber(42); // 'You win!'
guessNumber(61); // 'Try again!'

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются