🐘 PHP

Ввод и вывод данных в 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(). Удачи в программировании!