#3 php Cравнение двух чисел из GET-параметров: пример с if и else
Primary tabs
В уроке про приветствие по имени мы прочитали из адреса один параметр. Теперь возьмём два — и заставим страницу «принимать решение»: сравним числа и выведем результат. Это первый шаг от простого ответа к логике приложения: ответ сервера начинает зависеть от данных запроса.
Немного теории
Новое здесь — только сравнение и ветвление. Загляните в учебник: операторы сравнения, а также оператор 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-форму, которая собирает адрес с параметрами за нас.
- Log in to post comments
- 9 reads