Ввод и вывод данных в PHP 8.2: подробное руководство
Ввод и вывод данных в PHP
Что такое ввод и вывод данных?
Любая программа общается с пользователем. Чтобы программа могла что-то сделать, ей нужно получить данные (это ввод), а затем показать результат (это вывод).
Представь, что ты — кассир в кафе. Покупатель говорит тебе: «Я хочу кофе, маленький» — это ввод данных. Ты записываешь заказ, считаешь стоимость и говоришь: «С вас 150 рублей» — это вывод данных.
В PHP мы будем учиться получать данные от пользователя через консоль (командную строку) и выводить ответы обратно.
Основной синтаксис
Вывод данных: команда echo
Чтобы вывести текст или число на экран, используется команда echo.
<?php
echo "Привет, мир!";
echo 42;
echo "Мне " . 12 . " лет."; // Точка соединяет текст и числа
?>
Результат работы:
Привет, мир!42Мне 12 лет.
Обрати внимание: echo выводит всё подряд, без пробелов. Если нужны пробелы — ставь их в кавычках.
Ввод данных: функция fgets(STDIN)
Чтобы прочитать то, что ввёл пользователь с клавиатуры, используется специальная функция. В PHP для чтения из консоли мы используем fgets(STDIN).
<?php
echo "Введите ваше имя: ";
$name = fgets(STDIN);
echo "Привет, " . $name;
?>
Что здесь происходит:
echo "Введите ваше имя: ";— выводим подсказку пользователю.fgets(STDIN)— ждёт, пока пользователь что-то напишет и нажмёт Enter. Всё, что он ввёл, попадает в переменную$name.echo "Привет, " . $name;— выводим результат.
Важно: fgets() запоминает и символ перевода строки (Enter). Иногда это мешает, но пока не обращай внимания.
Преобразование в числа: intval() и floatval()
Когда пользователь вводит число, PHP считает его текстом. Чтобы делать математические операции, текст нужно превратить в число.
<?php
echo "Сколько тебе лет? ";
$age = fgets(STDIN);
$age = intval($age); // Превращаем текст в целое число
$nextYear = $age + 1;
echo "В следующем году тебе будет " . $nextYear;
?>
Для чисел с запятой (например, 2.5) используй floatval().
Разбор типичных задач
Задача 1: Уютное кафе
Нужно спросить имя, напиток и размер, а затем вывести заказ.
<?php
echo "Введите ваше имя: ";
$name = fgets(STDIN);
$name = trim($name); // Убираем лишние пробелы и перевод строки
echo "Выберите напиток (кофе, чай, какао): ";
$drink = fgets(STDIN);
$drink = trim($drink);
echo "Выберите размер (маленький, средний, большой): ";
$size = fgets(STDIN);
$size = trim($size);
echo "Заказ принят! " . $name . ", ваш " . $size . " " . $drink . " готовится.";
?>
Результат работы (пример):
Введите ваше имя: Маша
Выберите напиток (кофе, чай, какао): какао
Выберите размер (маленький, средний, большой): большой
Заказ принят! Маша, ваш большой какао готовится.
Задача 2: Площадь прямоугольника
Архитектору нужно посчитать площадь участка. Длину и ширину вводит пользователь.
<?php
echo "Введите длину участка (в метрах): ";
$length = fgets(STDIN);
$length = floatval($length);
echo "Введите ширину участка (в метрах): ";
$width = fgets(STDIN);
$width = floatval($width);
$area = $length * $width;
echo "Площадь участка: " . $area . " квадратных метров.";
?>
Результат работы:
Введите длину участка (в метрах): 15
Введите ширину участка (в метрах): 8
Площадь участка: 120 квадратных метров.
Задача 3: Определение возраста
Даны год рождения и текущий год. Нужно вычислить возраст.
<?php
echo "Введите год вашего рождения: ";
$birthYear = fgets(STDIN);
$birthYear = intval($birthYear);
echo "Введите текущий год: ";
$currentYear = fgets(STDIN);
$currentYear = intval($currentYear);
$age = $currentYear - $birthYear;
echo "Вам " . $age . " лет (или исполнится в этом году).";
?>
Результат работы:
Введите год вашего рождения: 2010
Введите текущий год: 2025
Вам 15 лет (или исполнится в этом году).
Частые ошибки новичков
- Забыли превратить текст в число. Если написать
$result = $a + $b, а$aи$b— текст, PHP может выдать ошибку или странный результат. Всегда используйintval()илиfloatval(). - Лишние пробелы и переводы строк.
fgets()захватывает Enter. Используйtrim(), чтобы убрать лишнее. - Путают точку и запятую. В PHP числа пишутся через точку: 3.14, а не 3,14. Для соединения текста используй точку:
"Привет, " . $name. - Забыли точку с запятой. Каждая команда в PHP заканчивается символом
;.
Итоговый пример: Периметр треугольника
Ты работаешь в компании по установке заборов. Чтобы купить материалы, нужно знать периметр треугольного участка. Программа запрашивает длины трёх сторон и выводит периметр.
<?php
echo "Расчет периметра треугольного участка." . PHP_EOL;
echo "Введите длину первой стороны (м): ";
$side1 = fgets(STDIN);
$side1 = floatval($side1);
echo "Введите длину второй стороны (м): ";
$side2 = fgets(STDIN);
$side2 = floatval($side2);
echo "Введите длину третьей стороны (м): ";
$side3 = fgets(STDIN);
$side3 = floatval($side3);
$perimeter = $side1 + $side2 + $side3;
echo "Периметр участка: " . $perimeter . " метров.";
?>
Результат работы:
Расчет периметра треугольного участка.
Введите длину первой стороны (м): 5
Введите длину второй стороны (м): 4
Введите длину третьей стороны (м): 6
Периметр участка: 15 метров.
Краткий итог: чтобы программа общалась с пользователем, используй echo для вывода и fgets(STDIN) для ввода. Не забывай превращать числа из текста в настоящие числа с помощью intval() или floatval(). Удачи в программировании!