Echo: примеры (PHP)
echo(string ...$expressions): voidОсновы функции echo
Конструкция echo в PHP применяется для вывода одной или нескольких строк. Она не является функцией в полном смысле, а языковой конструкцией, поэтому использование скобок необязательно. Ее основное назначение — генерация вывода, который отправляется в браузер или иной клиент.
echo используется повсеместно для вывода HTML-разметки, текста, значений переменных и результатов выражений. Она работает на этапе выполнения скрипта и является одним из базовых инструментов для создания динамического контента.
Конструкция принимает один или несколько аргументов, перечисленных через запятую. Каждый аргумент может быть строкой, переменной, константой или выражением, которое преобразуется в строку. В отличие от функций, echo не возвращает какого-либо значения.
Короткие примеры
<?php
echo "Привет, мир!";
?>Привет, мир!
<?php
$name = "Анна";
echo "Привет, ", $name, "! Твой баланс: ", 100.50;
?>Привет, Анна! Твой баланс: 100.5
<?php
$color = "red";
echo "<p style='color: {$color}'>Этот текст красный.</p>";
?>Этот текст красный.
<?php
$arr = [1, 2, 3];
echo implode("-", $arr);
?>1-2-3
Аналоги в PHP
Конструкция print работает аналогично echo, но всегда принимает только один аргумент и возвращает значение 1, что позволяет использовать ее в контексте выражений. В остальном она схожа.
<?php
$result = print "Текст"; // Выведет "Текст"
echo $result; // Выведет 1
?>Функция printf используется для форматированного вывода, а sprintf возвращает отформатированную строку. Они полезны для контроля над форматом чисел, дат и других данных.
<?php
printf("Сумма: %.2f рублей", 123.456);
?>Сумма: 123.46 рублей
print_r и var_dumpЭти функции применяются для отладки. print_r выводит информацию о переменной в удобочитаемом виде, а var_dump предоставляет более детальные сведения, включая тип и размер.
Конструкции в иных языках
print()В Python это функция, которая выводит объекты в стандартный поток вывода. Отличается наличием параметров, таких как sep для разделителя и end для завершающего символа.
print("Привет", "мир", sep="-", end="!\n")Привет-мир!
console.log() и document.write()console.log() выводит сообщения в консоль браузера, а document.write() записывает HTML в документ, но его использование считается устаревшим.
console.log("Сообщение", 123);
// Вывод в консоль: Сообщение 123SELECTВ SQL команда SELECT используется для возврата данных из базы, которые могут быть выведены как результат запроса. Ее задача существенно отличается от echo.
SELECT 'Привет, SQL' AS greeting;+--------------+ | greeting | +--------------+ | Привет, SQL | +--------------+
Распространенные ошибки
Попытка вывести массив напрямую приводит к ошибке типа Notice и сообщению "Array".
<?php
$array = [1, 2];
echo $array;
?>Notice: Array to string conversion in ... Array
Если переменная не определена, в зависимости от настроек, будет выведена ошибка.
<?php
echo $undefinedVar;
?>Warning: Undefined variable $undefinedVar in ...
Интерполяция сложных выражений внутри двойных кавычек требует оборачивания в фигурные скобки.
<?php
$num = 5;
echo "Результат: $num + 2"; // Не будет вычислено
?>Результат: 5 + 2
Изменения в новых версиях PHP
В PHP 8.0 и 8.1 для конструкции echo значительных изменений не было. Однако в PHP 8.0 общая система вывода теперь более стабильна благодаря исправлениям в обработке ошибок. В PHP 8.1 улучшена совместимость типов, но это не затрагивает напрямую работу echo.
Расширенные варианты применения
<?php
$isAdmin = true;
echo $isAdmin ? "Доступ разрешен" : "Доступ запрещен";
?>Доступ разрешен
<?php
ob_start();
echo "Этот текст попадает в буфер.";
$content = ob_get_clean();
echo "Буфер очищен, а его содержимое: " . $content;
?>Буфер очищен, а его содержимое: Этот текст попадает в буфер.
<?php
class User {
public $name = "Мария";
}
$user = new User();
echo "Имя пользователя: {$user->name}";
?>Имя пользователя: Мария
<?php
$count = 10;
?>
Количество: <?= $count ?> шт.Количество: 10 шт.
<?php
$data = ['id' => 1, 'status' => 'active'];
echo json_encode($data, JSON_UNESCAPED_UNICODE);
?>{"id":1,"status":"active"}