|
$money1 + $money2;
// echo $money выведет "123.1"...
$formatted = sprintf ("%01.2f", $money);
// echo $formatted выведет "123.10"!
Вот пример вывода целого числа, предваренного нужным количеством нулей:
$isodate=sprintf("%04d-%02d-%02d",$year,$month,$day);
Последний пример может вам очень пригодиться и показывает, насколько удобной
может иногда быть функция sprintf().
void printf(string $format [, mixed args, ...])
Делает то же самое, что и sprintf(), только результирующая строка не
возвращает-
ся, а направляется в браузер пользователя.
string number_format(float $number, int $decimals,
string $dec_point=".", string $thousands_sep=",");
Эта функция форматирует число с плавающей точкой с разделением его на триады с
указанной точностью. Она может быть вызвана с двумя или четырьмя аргументами,
но не с тремя! Параметр $decimals задает, сколько цифр после запятой должно
быть у числа в выходной строке. Параметр $dec_point представляет собой раздели-
тель целой и дробной частей, а параметр $thousands_sep — разделитель триад в
числе (если указать на его месте пустую строку, то триады не отделяются друг от
дру-
га).
В PHP существует еще несколько функций для выполнения форматных преобразова-
ний, среди них — sscanf() и fscanf(), которые часто применяются в Си. Однако
в PHP их использование весьма ограничено: чаще всего для разбора строк
оказывает-
ся гораздо выгоднее привлечь регулярные выражения или функцию explode().
Именно по этой причине я здесь не уделяю повышенного внимания этим функциям.
Работа с бинарными данными
Как мы уже знаем, строки могут содержать любые, в том числе и бинарные, данные
(то есть, символы с кодами, меньшими 32). Для работы с такими строками иногда
удобно использовать функции pack() и unpack().
string pack(string $format [,mixed $args, ...])
Функция pack() упаковывает заданные аргументы в бинарную строку, которая затем
и возвращается. Формат параметров, а также их количество, задается при помощи
Глава 12. Строковые функции 221
строки $format, которая представляет собой набор однобуквенных спецификаторов
форматирования — наподобие тех, которые указываются в sprintf(), но только без
знака %. После каждого спецификатора может стоять число, которое отмечает,
сколь-
ко информации будет обработано данным спецификатором. А именно, для форматов
a, A, h и H число задает, какое количество символов будет помещено в бинарную
строку из тех, что находятся в очередном параметре-строке при вызове функции
(то
есть, определяется размер поля для вывода строки). В случае @ оно определяет
абсо-
лютную позицию, в которую будут помещены следующие данные. Для всех осталь-
ных спецификаторов следующие за ними числа задают количество аргументов, на
которые распространяется действие данного формата. Вместо числа можно указать *,
в этом случае подразумевается, что спецификатор действует на все оставшиеся
дан-
ные. Вот полный список спецификаторов формата:
r a — строка, свободные места в поле заполняются символом с кодом 0;
r A — строка, свободные места заполняются пробелами;
r h — шестнадцатеричная строка, младшие разряды в начале;
r H — шестнадцатеричная строка, старшие разряды в начале;
r c — знаковый байт (символ);
r C — беззнаковый байт;
r s — знаковое короткое целое (16 битов, порядок байтов определяется архитекту-
рой процессора);
r S — беззнаковое короткое целое;
r n — беззнаковое целое (16 битов, старшие разряды в конце);
r v — беззнаковое целое (16 битов, младшие разряды в конце);
r i — знаковое целое (размер и порядок байтов определяется архитектурой);
r I — беззнаковое целое;
r l — знаковое длинное целое (32 бита, порядок байтов определяется архитекту-
рой);
r L — беззнаковое длинное целое;
r N — беззнаковое длинное целое (32 бита, старшие разряды в конце);
r V — беззнаковое целое (32 бита, младшие разряды в конце);
r f — число с плавающей точкой (зависит от архитектуры);
r d — число с плавающей точкой двойной точности (зависит от архите
|
|