Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Вывод и форматирование

Программа общается с миром через вывод: текст страницы, строка отчёта, сообщение об ошибке. В PHP для этого есть несколько инструментов — от простого echo до шаблонов, которые выравнивают и округляют значения.

echo и print

echo выводит одно или несколько значений через запятую:

<?php
 
echo 'Привет', ', ', 'мир', "\n";
print "Вторая строка";

print принимает только одно значение. В остальном они равнозначны, и почти всегда используют echo.

Многострочный текст

Длинный текст с переменными удобно записывать в виде heredoc. Он начинается с <<< и имени метки, а заканчивается той же меткой:

<?php
 
$name = 'Анна';
$total = 1250;
 
echo <<<TEXT
Здравствуйте, {$name}!
Сумма заказа: {$total} ₽.
TEXT;

Если имя метки взять в одинарные кавычки, переменные не подставляются — текст выводится как есть:

<?php
 
echo <<<'TEXT'
Переменная $name здесь останется текстом.
TEXT;

Шаблоны printf

printf() подставляет значения в шаблон на место меток, начинающихся с %:

<?php
 
printf("Товар: %s, цена: %d ₽\n", 'Чай', 250);
printf("Скидка: %.1f%%\n", 12.5);
printf("Номер заказа: %05d", 42);

Программа выведет Товар: Чай, цена: 250 ₽, Скидка: 12.5% и Номер заказа: 00042.

МеткаЗначение
%sСтрока
%dЦелое число
%fДробное число
%.2fДробное с двумя знаками после запятой
%05dЦелое, дополненное нулями до 5 знаков
%%Знак процента

sprintf

sprintf() работает так же, но не выводит строку, а возвращает её:

<?php
 
$line = sprintf('%s — %.2f', 'Кофе', 399.5);
 
echo $line; // Кофе — 399.50

Это удобно, когда строку нужно сохранить, передать в функцию или записать в файл.

Числа

number_format() округляет число и разделяет разряды:

<?php
 
echo number_format(1234567.891, 2, ',', ' '), "\n"; // 1 234 567,89
echo number_format(1234567.891), "\n";              // 1,234,568
echo str_pad('7', 3, '0', STR_PAD_LEFT);            // 007

Аргументы: число, знаков после запятой, разделитель дробной части, разделитель тысяч.

Отладочный вывод

Чтобы посмотреть, что лежит в переменной, используют print_r() и var_dump():

<?php
 
$user = ['name' => 'Анна', 'admin' => true];
 
print_r($user);
var_dump($user['admin']);

print_r() показывает структуру массива, var_dump() — ещё и типы значений. echo для массива не годится: он выведет слово Array и предупреждение.

Частая ошибка

Метка %d отбрасывает дробную часть, а не округляет. Цена 19.99 превратится в 19:

<?php
 
printf("%d\n", 19.99);  // 19
printf("%.2f", 19.99);  // 19.99

Для денег и других дробных чисел используйте %.2f или number_format().

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.