#3 php Cравнение двух чисел из GET-параметров: пример с if и else

В уроке про приветствие по имени мы прочитали из адреса один параметр. Теперь возьмём два — и заставим страницу «принимать решение»: сравним числа и выведем результат. Это первый шаг от простого ответа к логике приложения: ответ сервера начинает зависеть от данных запроса.

Немного теории

Новое здесь — только сравнение и ветвление. Загляните в учебник: операторы сравнения, а также оператор if с else — и elseif, который пригодится для третьей ветки. Всё остальное — массив $_GET и проверка isset() — мы уже разобрали в прошлом уроке.

Шаг 1. Открываем страницу с параметрами

Запустите страницу урока и сразу передайте два числа: http://localhost:19791/lessons/lesson03-compare-numbers/?a=5&b=7 — она ответит: «5 меньше 7».

Попробуйте другие значения: ?a=12&b=4 даст «12 больше 4», а ?a=3&b=3 — «3 равно 3». Если открыть страницу без параметров, она попросит их передать.

Шаг 2. Код страницы

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Сравнение чисел</title>
</head>
<body>
  <h1>Сравнение чисел</h1>
<?php
if (isset($_GET['a'], $_GET['b'])) {
    $a = $_GET['a'];
    $b = $_GET['b'];
    if ($a > $b) {
        echo '<p>' . $a . ' больше ' . $b . '</p>';
    } elseif ($a < $b) {
        echo '<p>' . $a . ' меньше ' . $b . '</p>';
    } else {
        echo '<p>' . $a . ' равно ' . $b . '</p>';
    }
} else {
    echo '<p>Передайте два числа, например: ?a=5&b=7</p>';
}
?>
</body>
</html>

Разберём новые моменты:

  • isset() принимает сразу несколько имён: условие выполнится, только если есть оба параметра — иначе покажем подсказку;
  • веток три: $a > $b, затем elseif для $a < $b и else для оставшегося случая — равенства;
  • значения из $_GET приходят строками, но числовые строки PHP сравнивает как числа — поэтому ?a=10&b=9 честно ответит «10 больше 9» (проверьте!).

Что произошло на самом деле

Механика та же, что и раньше: пары значений уехали на сервер внутри GET-запроса, PHP разложил их в $_GET, а скрипт напечатал ответ. Новое здесь только одно — ветвление: теперь из нескольких вариантов ответа выбирает код, а не мы правкой файла.

Попробуйте сами

  • передайте равные числа и убедитесь, что сработала ветка else;
  • поменяйте значения местами: ?a=7&b=5;
  • не запуская код, предположите, что выведет ?a=0&b=0, — а затем проверьте;
  • посложнее: добавьте третий параметр c и найдите наибольшее из трёх чисел.

Итоги

  • GET-параметров может быть сколько угодно — все они собираются в массив $_GET;
  • комбинация if/elseif/else позволяет странице отвечать по-разному в зависимости от данных запроса;
  • isset() с несколькими именами защищает от отсутствующих параметров.

В следующем уроке перестанем набирать параметры руками — сделаем HTML-форму, которая собирает адрес с параметрами за нас.