Be careful:
printf ("(9.95 * 100) = %d \n", (9.95 * 100));
'994'
First %d converts a float to an int by truncation.
Second floats are notorious for tiny little rounding errors.printf
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
printf
Референца за `function.printf.php` со подобрена типографија и навигација.
printf
(PHP 4, PHP 5, PHP 7, PHP 8)
printf — Излез форматирана низа
Параметри
format-
Низата за форматирање се состои од нула или повеќе директиви: обични знаци (со исклучок на
%) што се копираат директно во резултатот и спецификации за конверзија, секоја од кои резултира со добивање на сопствен параметар.Спецификацијата за конверзија следи овој прототип:
%[argnum$][flags][width][.precision]specifier.но прифаќа низа од аргументи, наместо променлив број на аргументи.
Цел број проследен со знак долар
$, за да се специфицира кој број аргумент да се третира во конверзијата.Argnum
Знаменце = NULL -Порамни лево во дадената ширина на полето; Десното порамнување е стандардно +Префикс позитивни броеви со знак плус +; Стандардно само негативните се префиксирани со негативен знак.FlagsЈа пополнува низата со празни места. Ова е стандардно. 0Само лево ги пополнува броевите со нули. Со sспецификатори ова може да ги пополни и десно со нули.'(простор)Го полни резултатот со карактерот (char). Ширина
Или цел број што кажува колку знаци (минимум) треба да резултира оваа конверзија, или
*. Ако*се користи, тогаш ширината се дава како дополнителна цел вредност што му претходи на онаа форматирана од спецификаторот.Прецизност
Период
.опционално проследено со цел број или*, чие значење зависи од спецификаторот:-
За
e,E,fandFспецификатори: ова е бројот на цифри што треба да се испечатат по децималната точка (по дифолт, ова е 6). -
За
g,G,handHспецификатори: ова е максималниот број на значајни цифри што треба да се испечатат. -
За
sспецификатор: делува како точка на прекин, поставувајќи максимално ограничување на карактерите на низата.
Забелешка: Ако е специфициран периодот без експлицитна вредност за прецизност, се претпоставува 0. Ако
*се користи, прецизноста се дава како дополнителна цел вредност што му претходи на онаа форматирана од спецификаторот.Спецификатори Спецификатор = NULL %Буквален процентен знак. Не е потребен аргумент. bАргументот се третира како цел број и се претставува како бинарен број. cАргументот се третира како цел број и се претставува како карактер со таа ASCII. dАргументот се третира како цел број и се претставува како (потпишан) децимален број. eАргументот се третира како научна нотација (на пр. 1.2e+2). EКако eспецификатор, но користи големи букви (на пр. 1.2E+2).fАргументот се третира како пловечки број и се прикажува како пловечки број (свесен за локалот). FАргументот се третира како пловечки број и се прикажува како пловечки број (не свесен за локалот). gОпшт формат.
Нека P е еднакво на прецизноста ако е различно од нула, 6 ако прецизноста е изоставена или 1 ако прецизноста е нула. Потоа, ако конверзијата со стил E би имала експонент X:
Ако P > X ≥ −4, конверзијата е со стил f и прецизност P − (X + 1). Во спротивно, конверзијата е со стил e и прецизност P − 1.
GКако gспецификатор, но користиEandf.hКако gспецификатор, но користиF. Достапно од PHP 8.0.0.HКако gспецификатор, но користиEandF. Достапно од PHP 8.0.0.oАргументот се третира како цел број и се прикажува како октален број. sАргументот се третира и прикажува како стринг. uАргументот се третира како цел број и се прикажува како непотпишан децимален број. xАргументот се третира како цел број и се прикажува како хексадецимален број (со мали букви). XАргументот се третира како цел број и се прикажува како хексадецимален број (со големи букви). Ги ескејпува специјалните знаци во стринг за употреба во SQL изјаваНа
cспецификаторот за тип ги игнорира подлогата и ширината.Ги ескејпува специјалните знаци во стринг за употреба во SQL изјаваОбидот за користење комбинација од спецификаторите за стринг и ширина со множества знаци што бараат повеќе од еден бајт по знак може да резултира со неочекувани резултати.
Променливите ќе бидат претворени во соодветен тип за спецификаторот:
Ракување со типови Тип Спецификатори string sint d,u,c,o,x,X,bfloat e,E,f,F,g,G,h,H -
За
values-
Вратени вредности
Враќа должина на излезниот стринг.
Errors/Exceptions
Од PHP 8.0.0, а ValueError се фрла ако бројот на аргументи е нула. Пред PHP 8.0.0, а E_WARNING беше емитирано наместо тоа.
Од PHP 8.0.0, а ValueError се фрла ако [width] е помало од нула или поголемо од PHP_INT_MAX. Пред PHP 8.0.0, а E_WARNING беше емитирано наместо тоа.
Од PHP 8.0.0, а ValueError се фрла ако [precision] е помало од нула или поголемо од PHP_INT_MAX. Пред PHP 8.0.0, а E_WARNING беше емитирано наместо тоа.
Од PHP 8.0.0, а ArgumentCountError се фрла кога се даваат помалку аргументи отколку што е потребно. Пред PHP 8.0.0, false беше вратено и а E_WARNING емитирано наместо тоа.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.0 |
Оваа функција повеќе не враќа false при неуспех.
|
| 8.0.0 |
Фрли а ValueError ако бројот на аргументи е нула; претходно оваа функција емитираше а E_WARNING instead.
|
| 8.0.0 |
Фрли а ValueError if [width] е помало од нула или поголемо од PHP_INT_MAX; претходно оваа функција емитираше а E_WARNING instead.
|
| 8.0.0 |
Фрли а ValueError if [precision] е помало од нула или поголемо од PHP_INT_MAX; претходно оваа функција емитираше а E_WARNING instead.
|
| 8.0.0 |
Фрли а ArgumentCountError кога се даваат помалку аргументи отколку што е потребно; претходно оваа функција емитираше а E_WARNING instead.
|
Примери
Пример #1 printf(): разни примери
<?php
$n = 43951789;
$u = -43951789;
$c = 65; // ASCII 65 is 'A'
// notice the double %%, this prints a literal '%' character
printf("%%b = '%b'\n", $n); // binary representation
printf("%%c = '%c'\n", $c); // print the ascii character, same as chr() function
printf("%%d = '%d'\n", $n); // standard integer representation
printf("%%e = '%e'\n", $n); // scientific notation
printf("%%u = '%u'\n", $n); // unsigned integer representation of a positive integer
printf("%%u = '%u'\n", $u); // unsigned integer representation of a negative integer
printf("%%f = '%f'\n", $n); // floating point representation
printf("%%o = '%o'\n", $n); // octal representation
printf("%%s = '%s'\n", $n); // string representation
printf("%%x = '%x'\n", $n); // hexadecimal representation (lower-case)
printf("%%X = '%X'\n", $n); // hexadecimal representation (upper-case)
printf("%%+d = '%+d'\n", $n); // sign specifier on a positive integer
printf("%%+d = '%+d'\n", $u); // sign specifier on a negative integer
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
%b = '10100111101010011010101101' %c = 'A' %d = '43951789' %e = '4.39518e+7' %u = '43951789' %u = '4251015507' %f = '43951789.000000' %o = '247523255' %s = '43951789' %x = '29ea6ad' %X = '29EA6AD' %+d = '+43951789' %+d = '-43951789'
Пример #2 printf(): спецификатори на низи
<?php
$s = 'monkey';
$t = 'many monkeys';
printf("[%s]\n", $s); // standard string output
printf("[%10s]\n", $s); // right-justification with spaces
printf("[%-10s]\n", $s); // left-justification with spaces
printf("[%010s]\n", $s); // zero-padding works on strings too
printf("[%'#10s]\n", $s); // use the custom padding character '#'
printf("[%'#*s]\n", 10, $s); // Provide the padding width as an additional argument
printf("[%10.9s]\n", $t); // right-justification but with a cutoff of 9 characters
printf("[%-10.9s]\n", $t); // left-justification but with a cutoff of 9 characters
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
[monkey] [ monkey] [monkey ] [0000monkey] [####monkey] [####monkey] [ many monk] [many monk ]
Види Исто така
- print Ако се предадат повеќе аргументи, тогаш заградите нема да бидат потребни за да се наметне редоследот на извршување, бидејќи секој израз е одделен:
- sprintf() - Врати форматирана низа
- fprintf() - Запиши форматирана низа во поток
- vprintf() Излез на стринг
- vsprintf() - Врати форматирана низа
- vfprintf() - Запиши форматирана низа во поток
- sscanf() - Парсирај влез од низа според формат
- fscanf() - Парсира влез од датотека според формат
- number_format() - Заокружи дропки надолу
- date() - Форматирај Unix временски печат
- flush() Излез на форматиран стринг
Белешки од корисници 4 белешки
[Editor's Note: Or just use vprintf...]
If you want to do something like <?php printf('There is a difference between %s and %s', array('good', 'evil')); ?> (this doesn't work) instead of <?php printf('There is a difference between %s and %s', 'good', 'evil'); ?> you can use this function:
<?php
function printf_array($format, $arr)
{
return call_user_func_array('printf', array_merge((array)$format, $arr));
}
?>
Use it the following way:
<?php
$goodevil = array('good', 'evil');
printf_array('There is a difference between %s and %s', $goodevil);
?>
and it will print:
There is a difference between good and evilYou can use this function to format the decimal places in a number:
$num = 2.12;
printf("%.1f",$num);
prints:
2.1
see also: number_format()A few things to note about printf:
1. The definition of specifier g (or G) is often wrongly stated as being "use e or f (or E or f), whichever results in the shorter string". The correct rule is given in the documentation and it does not always give this result.
2. For g/G/h/H, trailing zeros after the decimal point are removed (but not a zero just after the decimal point, in the e/E style).
3. g/G are locale-aware whether the e/E or f style is produced.
4. For b/o/x/X/u (that is, all integer styles except d) the result shown for negative values is the twos complement form of the number, 2**32 + v, where v is the (negative) value.