Printf: примеры (PHP)
printf(string $format, mixed ...$values): intОписание функции printf
Функция printf в PHP применяется для форматированного вывода строк. Она выводит данные напрямую в поток вывода, обычно в браузер или консоль. Эта функция используется, когда требуется строгий контроль над форматированием текста, например, для вывода чисел с определённым количеством знаков после запятой, выравнивания текста или подстановки значений по шаблону.
Синтаксис функции: printf(string $format, mixed ...$values): int.
- $format - строка формата, содержащая обычный текст и спецификаторы преобразования, которые начинаются с символа процента (
%). - ...$values - переменное количество аргументов, значения которых подставляются вместо спецификаторов в строке формата.
Основные спецификаторы: %b (двоичное число), %c (символ), %d (целое число), %e (научная нотация), %f (число с плавающей точкой), %o (восьмеричное), %s (строка), %u (беззнаковое целое), %x/%X (шестнадцатеричное). Спецификаторы могут включать флаги, ширину, точность и тип.
Примеры использования
Вывод строки с целым числом:
printf("Число: %d", 42);Число: 42
Вывод нескольких значений:
printf("Координаты: x=%d, y=%d", 10, 20);Координаты: x=10, y=20
Число с плавающей точкой:
printf("Процент: %.2f%%", 45.6789);Процент: 45.68%
Заполнение нулями:
printf("Номер: %05d", 7);Номер: 00007
Выравнивание по левому краю:
printf("[%-10s]", "текст");[текст ]
Вывод знака для положительных чисел:
printf("%+d", 15);+15
Похожие функции в PHP
Функция sprintf идентична printf, но возвращает отформатированную строку вместо вывода. Её применяют, когда результат нужен для дальнейшей обработки.
Функции vprintf и vsprintf принимают массив значений вместо переменного числа аргументов. Это удобно при динамическом формировании аргументов.
Функция fprintf выводит результат в указанный поток, например, в файл. Она полезна для логирования.
printf используют для прямого вывода. sprintf выбирают при необходимости манипуляций со строкой. fprintf применяют для записи в файлы.
Типичные ошибки
Если спецификаторов больше, чем аргументов, выводится предупреждение.
printf("%d %d", 1);Warning: printf(): Too few arguments
Использование неизвестного спецификатора приводит к выводу символа как есть.
printf("%q", "test");%q
Для форматирования чисел с десятичной точкой зависит от локали. В некоторых локалях используется запятая.
setlocale(LC_NUMERIC, 'ru_RU'); printf("%.2f", 1.5);1,50
Изменения в PHP 8
В PHP 8.0 были изменены способы обработки несоответствия аргументов. Ранее некорректное количество аргументов могло приводить к неопределённому поведению, теперь же в большинстве случаев вызывается ошибка уровня Warning. Также улучшена обработка спецификаторов для чисел с плавающей точкой.
Расширенные примеры
printf("Сумма: $%.2f", 1234.567);Сумма: $1234.57
printf("Цвет: #%06X", 0xFFA500);Цвет: #FFA500
printf("%'-20s%'10d\n", "Итог:", 1000);Итог:---------------- 1000
Порядок вывода аргументов можно изменять.
printf("%2\$s %1\$s", "мир", "Привет");Привет мир
printf("Символ: %c", 65);Символ: A
printf("%.2e", 0.000123);1.23e-4
printf("%'*10.4f", 12.345678);***12.3457
Аналоги в других языках
Printf в Python
В Python используют метод format строки или f-строки (Python 3.6+).
print("Число: {}".format(42))Число: 42
value = 45.6789; print(f"Процент: {value:.2f}%")Процент: 45.68%
Printf в Javascript
В JavaScript нет прямой аналогии, но есть шаблонные строки.
console.log(`Координаты: x=${10}, y=${20}`);Координаты: x=10, y=20
Printf в MySQL
В MySQL есть функция FORMAT для чисел и CONCAT для строк.
SELECT FORMAT(45.6789, 2);45.68
В языке C функция printf практически идентична PHP, но со строгой типизацией аргументов.