Printf php mifano. Uundaji wa vitendaji vya pato katika PHP. Inazalisha mfuatano wa umbizo

(PHP 4, PHP 5, PHP 7)

sprintf - Hurejesha mfuatano ulioumbizwa

Orodha ya vigezo

Mfuatano wa fomati unajumuisha sifuri au maagizo zaidi: herufi za kawaida (isipokuwa % ), ambazo zinakiliwa moja kwa moja kwenye kamba inayosababisha, na maelezo ya mabadiliko, ambayo kila mmoja hubadilishwa na moja ya vigezo. Hii inatumika kwa wote wawili sprintf(), na kwa printf().

Kila kibainishi cha ubadilishaji kina ishara ya asilimia ( % ), ikifuatiwa na kipengee kimoja au zaidi (kwa mpangilio ambao zimeorodheshwa hapa):

  1. Hiari kifafanuzi cha tabia, ikionyesha jinsi ishara (- au +) itatumika kwa nambari. Kwa chaguo-msingi, ishara ya minus pekee ndiyo inatumiwa ikiwa nambari ni hasi. Kibainishi hiki husababisha nambari chanya pia kuonyesha ishara ya kuongeza na iliongezwa katika PHP 4.3.0.
  2. Hiari kiashiria cha pedi, ambayo inabainisha ni herufi gani itatumika kuweka matokeo kwa urefu unaohitajika. Inaweza kuwa nafasi au 0 . Chaguo msingi ni nafasi. Herufi mbadala inaweza kubainishwa kwa kutumia nukuu moja ( " ) Tazama mifano hapa chini.
  3. Hiari kifafanuzi cha upatanishi, ambayo hubainisha mpangilio wa kushoto au kulia. Kwa chaguo-msingi imeunganishwa kulia, - kutumika kwa upangaji wa kushoto.
  4. Nambari ya hiari kibainisha upana, ambayo hubainisha idadi ya chini ya herufi ambayo matokeo ya ubadilishaji huu yatakuwa nayo.
  5. Hiari kifafanuzi cha usahihi, iliyobainishwa kama kipindi (".") ikifuatiwa na mfuatano wa hiari wa desimali ambao hubainisha ni sehemu ngapi za desimali za kuonyesha kwa nambari za sehemu zinazoelea. Inapotumiwa na mifuatano, kibainishi hiki hufanya kazi kama sehemu ya kukata ambayo huweka kikomo cha juu zaidi cha herufi. Unaweza pia kutaja ishara iliyotumiwa kukamilisha nambari kati ya nukta na nambari.
  6. Aina ya kibainishi, ambayo inabainisha jinsi ya kushughulikia aina ya data ya hoja. Aina halali:

    • % - ishara ya asilimia. Hoja haitumiki.
    • b- hoja inachukuliwa kama nambari kamili na matokeo kama nambari ya binary.
    • c- hoja inachukuliwa kama nambari kamili na matokeo kama mhusika aliye na nambari inayolingana ya ASCII.
    • d- hoja inachukuliwa kama nambari kamili na pato kama nambari ya desimali iliyotiwa saini.
    • e- hoja inatafsiriwa kama nambari katika nukuu ya kisayansi (kwa mfano, 1.2e+2). Kibainishi cha usahihi kinaonyesha idadi ya nafasi za desimali tangu PHP 5.2.1. Katika matoleo ya awali, ilionyesha idadi ya takwimu muhimu (ishara moja chini).
    • E- sawa %e, lakini hutumia herufi kubwa (kwa mfano, 1.2E+2).
    • f- hoja inachukuliwa kama nambari ya sehemu inayoelea na pia hutolewa kulingana na eneo.
    • F- hoja inachukuliwa kama nambari ya sehemu inayoelea na pia ni pato, lakini bila kutegemea eneo. Inapatikana kuanzia PHP 4.3.10 na PHP 5.0.3.
    • g %e Na %f.
    • G- huchagua ingizo fupi kutoka %E Na %f.
    • o- hoja inachukuliwa kama nambari kamili na pato kama nambari ya octal.
    • s- hoja inachukuliwa kama kamba.
    • u- hoja inachukuliwa kama nambari kamili na pato kama nambari ya desimali ambayo haijatiwa saini.
    • x- hoja inachukuliwa kama nambari kamili na pato kama nambari ya hexadecimal (kesi ndogo).
    • X- hoja inachukuliwa kama nambari kamili na pato kama nambari ya hexadecimal (kwa herufi kubwa).

Vigezo vitabadilishwa kuwa aina inayofaa kwa kibainishi:

Ushughulikiaji wa Aina
Aina Kielezi
kamba s
nambari kamili d, u, c, o, x, X, b
mara mbili g, G, e, E, f, F

Tahadhari

Kujaribu kutumia mchanganyiko wa mifuatano na viambishi vya upana na usimbaji unaohitaji zaidi ya baiti moja kwa kila herufi kunaweza kutoa matokeo yasiyotarajiwa.

Mfuatano wa umbizo unaauni kuhesabu na kupanga upya vigezo. Kwa mfano:

Mfano # 1 Kubadilisha mpangilio wa vigezo

$ num = 5;
$location = "mti" ;

Umbizo la $ = "nyani %d wameketi juu ya %s";

?>

Nambari hii itatoa "nyani 5 ameketi juu ya mti". Sasa fikiria kwamba kamba ya umbizo iko katika faili tofauti, ambayo itatafsiriwa kwa lugha nyingine, na tunaiandika tena kama hii:

Mfano # 2 Kubadilisha mpangilio wa vigezo

Umbizo la $ = "Kuna nyani %d wameketi juu ya %s";
echo sprintf (umbizo la $, $num, eneo la $);
?>

Kuna tatizo: mpangilio wa vibainishi vya ubadilishaji haulingani na mpangilio wa hoja. Hatutaki kubadilisha msimbo, na tunahitaji kubainisha ni hoja gani inayolingana na kiashiria kipi cha ubadilishaji.

Mfano #3 Kubadilisha mpangilio wa vigezo

Umbizo la $ = "Kuna nyani %1$d wameketi kwenye %2$s";
echo sprintf (umbizo la $, $num, eneo la $);
?>

Kuweka nambari za hoja kuna matumizi mengine: hukuruhusu kuchapisha hoja sawa mara nyingi bila kupitisha vigezo vya ziada kwa kazi.

Mfano #4 Kubadilisha mpangilio wa vigezo

Umbizo la $ = "Kuna nyani %1$d wanaoketi kwenye %2$s.
Inapendeza kuwa na %2$s ameketi juu ya nyani %1$d."
;
echo sprintf (umbizo la $, $num, eneo la $);
?>

Wakati wa kubadilisha mpangilio wa vigezo kielezi cha nafasi n$ lazima ije mara baada ya ishara ya asilimia ( % ) kabla ya maelezo mengine yote, kama inavyoonyeshwa kwenye mfano hapa chini.

Mfano #5 Kubainisha herufi inayosaidia

echo sprintf ("%".9d\n" , 123 );
echo sprintf ("%".09d\n" , 123 );
?>

123 000000123

Mfano #6 Kwa kutumia kiambishi cha nafasi na kwa kushirikiana na vifafanuzi vingine

Umbizo la $ = "Kuna nyani %1$04d wameketi kwenye %2$s";
echo sprintf (umbizo la $, $num, eneo la $);
?>

Matokeo ya kuendesha mfano huu:

nyani 0005 wamekaa juu ya mti

Maoni:

Jaribio lilifanywa la kutumia kibainishi cha nafasi kubwa kuliko PHP_INT_MAX, itasababisha kitendakazi kutoa onyo sprintf() .

Tahadhari

The c kibainishi cha aina hupuuza pedi na upana

Rudisha maadili

Hurejesha mfuatano ulioumbizwa kulingana na umbizo .

Mifano

Mfano #7 sprintf(): pedi na sufuri

$n = 43951789 ;
$u = - 43951789 ;
$ c = 65; // ASCII 65 ni "A"

// kumbuka kuwa mara mbili %% ni pato kama "%" moja
printf ("%%b = "%b"\n" , $n ); // uwakilishi wa binary
printf ("%%c = "%c"\n" , $c ); // huchapisha herufi ya ascii, sawa na chaguo la kukokotoa chr().
printf ("%%d = "%d"\n" , $n ); // nambari kamili ya kawaida
printf ("%%e = "%e"\n" , $n ); // nukuu ya kisayansi
printf ("%%u = "%u"\n" , $n ); // uwakilishi kamili usiotiwa saini wa nambari chanya
printf ("%%u = "%u"\n" , $u ); // uwakilishi kamili usiotiwa saini wa nambari hasi
printf ("%%f = "%f"\n" , $n ); // uwakilishi wa nambari ya sehemu inayoelea
printf ("%%o = "%o"\n" , $n ); // uwakilishi wa octal
printf ("%%s = "%s"\n" , $n ); // mstari
printf ("%%x = "%x"\n" , $n ); // uwakilishi wa hexadecimal (kesi ya chini)
printf ("%%X = "%X"\n" , $n ); // uwakilishi wa hexadecimal (herufi kubwa)

Printf ("%%+d = "%+d"\n" , $n ); // kifafanuzi cha saini na nambari kamili
printf ("%%+d = "%+d"\n" , $u ); // kielezi cha saini na nambari hasi
?>

Matokeo ya kuendesha mfano huu:

%b = "10100111101010011010101101" %c = "A" %d = "43951789" %e = "4.39518e+7" %u = "43951789" %u = "4251010150 = "4251010150" 4251015090% 1 = 4251010150% "2475232 55 " %s = "43951789" %x = "29ea6ad" %X = "29EA6AD" %+d = "+43951789" %+d = "-43951789"

Mfano #8 printf(): maelezo ya kamba

$s = "tumbili" ;
$t = "nyani wengi" ;

Printf("[%s]\n" , $s ); // pato la mstari wa kawaida
printf ("[%10s]\n" , $s ); // panganisha kulia na nafasi
printf ("[%-10s]\n" , $s ); // mpangilio wa kushoto na nafasi
printf ("[%010s]\n" , $s ); // pedi ya sifuri pia inafanya kazi na kamba
printf ("[%"#10s]\n" , $s ); // tumia kibambo chako kikamilishi cha "#".
printf ("[%10.10s]\n" , $t ); // mpangilio wa kushoto na trim ya herufi 10
?>

chapa("jinsi ya kupanga", parameta1, parameta2, ...) -- huonyesha matokeo kwenye skrini

$matokeo= sprintf("..", .., .., ...) - kitu kimoja, tu mstari sio pato, lakini umewekwa katika matokeo ya $

Nukuu kutoka kwa tafsiri ya mwongozo ( MIFANO chini :-):

sprintf

sprintf -- inarudisha kamba iliyoumbizwa
Maelezo
sprintf (muundo wa kamba, mchanganyiko ...);

Hurejesha mfuatano uliochakatwa kulingana na mfuatano wa umbizo umbizo .

Mfuatano wa umbizo ulio na maagizo sifuri au zaidi: herufi za kawaida (isipokuwa %) ambazo zimenakiliwa moja kwa moja kwa matokeo, na ambazo zinanakiliwa moja kwa moja kwa matokeo, na maelezo ya mabadiliko, ambayo kila mmoja hufanya vitendo maalum. Hii inatumika pia kwa sprintf() na kwa printf()

Kila taarifa ya mabadiliko ina vipengele vifuatavyo, ili:

    Ziada kiashiria cha pedi, ambayo huambia ni herufi gani zitatumika kuweka matokeo kwa saizi sahihi ya kamba. Hizi zinaweza kuwa nafasi au 0 (bambo sifuri). Kwa chaguo-msingi, imejaa nafasi. Herufi mbadala ya kuweka pedi inaweza kubainishwa kwa nukuu moja ("). Tazama mifano hapa chini.

    Ziada kifafanuzi cha upatanishi, ambayo inasema matokeo yanapaswa kuunganishwa kushoto au kulia. Kwa chaguo-msingi, upangaji umewekwa sawa; - tabia itasababisha usawa wa kushoto.

    Ziada kibainisha upana, ambayo inasema ni herufi ngapi (kiwango cha chini) uingizwaji huu unaweza kufanywa na.

    Ziada kifafanuzi cha usahihi, ambayo hueleza ni sehemu ngapi za desimali za kuonyesha kwa nambari za sehemu zinazoelea. Kifafanuzi hiki hakina athari kwa aina zaidi ya mara mbili. (kazi nyingine muhimu kwa uundaji wa nambari ni muundo_wa_ nambari() .)

  1. Aina ya kibainishi, ambayo inaelezea jinsi aina ya data ya hoja inapaswa kutibiwa. Aina zinazowezekana:

    % ni alama ya asilimia. Hakuna hoja inayohitajika.
    b - hoja inachukuliwa kama nambari kamili na inawakilishwa kama nambari ya binary.
    c - hoja inachukuliwa kama nambari kamili na inawakilishwa kama mhusika aliye na thamani ya ASCII.
    d - hoja inachukuliwa kama nambari kamili na inawakilishwa kama nambari ya desimali.
    f - hoja inachukuliwa kuwa mara mbili na kuwakilishwa kama nambari ya sehemu inayoelea.
    o - hoja inachukuliwa kama nambari kamili na inawakilishwa kama nambari ya octal.
    s - hoja inatafsiriwa na kuwakilishwa kama kamba.
    x - hoja inachukuliwa kama nambari kamili na inawakilishwa kama nambari ya heksadesimali (iliyo na herufi katika herufi ndogo).
    X - hoja inachukuliwa kama nambari kamili na inawakilishwa kama nambari ya heksadesimali (iliyo na herufi katika herufi kubwa).
Mifano

Mfano 2. sprintf: uundaji wa sarafu

$ pesa1 = 68.75; $ pesa2 = 54.35; $ pesa = $ pesa1 + $ pesa2; // echo $pesa itatoa "123.1"; $iliyoumbizwa = sprintf("%01.2f", $fedha); // echo $iliyoumbizwa itatoa "123.10"

Mifano

Kila kitu kilichoandikwa >>> kati ya mabano kama hayo <<< ni matokeo ya kazi (yaani mfano wa pato kwa skrini) $s="MyString"; -> mstari %s $f=12345.6789; -> sehemu %f $d=12345; -> nambari kamili %d mfumo wa 10: 0123456789 16namba %x mfumo wa 16: 0123456789abcdef nambari 16 %X mfumo wa 16: 0123456789ABCDEF 8namba %o 6 na 20% mfumo wa 20:20% tu 20:20% mfumo wa 20: chapisha nambari : printf("%d",$ d); >>> 12345<<< просто выводим 16число: printf("%X",123456789); >>>75BCD15<<< просто выводим 2число: printf("%b",$d); >>> 11000000111001 <<< просто выводим дробное число: printf("%f",$f); >>> 12345.6789 <<< дополнение чисел нулями: printf("%010d",$d); >>> 0000012345 <<< округление до 3х знаков после запятой: printf("%.3f",$f); >>> 12345.679 <<< просто выводим число + посторонний текст: printf("посторонний%dтекст",$d); >>> outsider12345text<<< вывод нескольких переменных - последовательное перечисление printf("%d-%f-%s",$d,$f,$s); >>> 12345-12345.678900-MyString<<< выравнивание (ширина 20 символов) по правому краю, пустоту заполняем "_": printf("%"_20s",MyString); >>> ____________MyString<<< выравнивание по левому краю, пустоту заполняем "x": printf("%-"x20s",MyString); >>> MyStringxxxxxxxxxxxx<<<

Tazama mifano mingine hapa:

Huchapisha mfuatano, thamani tofauti, au usemi.
Sintaksia:

Chapisha (string arg)

print() chaguo za kukokotoa huchapisha hoja ya arg, ambayo inaweza kuwa kigezo au kielezi.

vsprintf()

Hurejesha mfuatano ulioumbizwa (PHP 4 >= 4.1.0, PHP 5)

Maelezo:

Kamba vsprintf (muundo wa kamba, safu ya args)

Chaguo hili la kukokotoa ni sawa na sprintf(), lakini inachukua safu badala ya idadi tofauti ya hoja.

Huchapisha thamani moja au zaidi.
Sintaksia:

Mwangwi (kamba arg1, kamba ...)

Kitendaji cha echo() kinaonyesha maadili ya vigezo vilivyoorodheshwa.
echo() kwa kweli ni muundo wa lugha, kwa hivyo hauitaji mabano hata kama hoja nyingi zinatumika.
echo "Vipindi vilivyopo kwenye msimbo vinahifadhiwa na kutumika katika matokeo."
"ili kuepuka matumizi haya."
"mendeshaji wa mawasiliano";

Toa mfuatano ulioumbizwa.
Sintaksia:

Int printf(muundo wa kamba [, args mchanganyiko, ...]);

Inafanya kitu sawa na sprintf(), kamba inayotokana tu hairudishwi, lakini hutumwa kwa kivinjari cha mtumiaji.

Hufanya uumbizaji wa mfuatano na uwekaji mbadala.
Sintaksia:

Sprintf(umbizo la $[,args, ...])

Chaguo hili la kukokotoa hurejesha mfuatano ulioundwa kutoka kwa mfuatano ulio na vibambo maalum ambavyo baadaye vitabadilishwa na thamani za viambajengo vinavyolingana katika orodha ya hoja.
Mfuatano wa umbizo la $format unaweza kujumuisha amri za umbizo zilizotanguliwa na herufi %.
Wahusika wengine wote wanakiliwa kwa kamba ya pato kama ilivyo. Kila kibainishi cha umbizo (yaani, herufi % na amri zifuatazo) inalingana na kigezo kimoja na kimoja tu kilichobainishwa baada ya kigezo cha umbizo $. Ikiwa unahitaji kuweka % kwenye maandishi kama ishara ya kawaida, unahitaji kuifanya mara mbili:

Echo sprintf("Asilimia ilikuwa %d%%",$asilimia);

Kila kibainishi cha umbizo kina upeo wa vipengele vitano (kwa mpangilio vinavyoonekana baada ya %) herufi:

Kiashirio cha hiari cha ukubwa wa uga kinachobainisha ni herufi ngapi zitatengwa kwa thamani ya pato.
Kama vibambo vya kishikilia nafasi (ikiwa thamani ni ndogo kuliko saizi ya uga ili kuionyesha)
nafasi au 0 inaweza kutumika, chaguo-msingi ni nafasi. Unaweza kubainisha herufi nyingine yoyote ya kichujio ikiwa utaibainisha katika mfuatano wa mfuatano, unaotanguliwa na kiapostrofi.
Kiashirio cha hiari cha kupanga ambacho kinabainisha kama matokeo yatapangiliwa kulia au kushoto kwa uga. Chaguo-msingi ni mpangilio wa kulia, lakini unaweza kutaja upatanishi wa kushoto kwa kubainisha - (minus) ishara.

Nambari ya hiari inayobainisha ukubwa wa sehemu ya kuonyesha thamani. Ikiwa matokeo hayapo kwenye shamba, basi "itapanua" zaidi ya kando ya uwanja huu, lakini haitapunguzwa.
Nambari ya hiari, inayotanguliwa na kipindi ".", ambayo hubainisha ni nafasi ngapi za desimali kutakuwa na mfuatano unaotokana.
Kiainishi hiki huzingatiwa tu ikiwa nambari ya sehemu inayoelea inatolewa, vinginevyo itapuuzwa.
Hatimaye, kiashiria kinachohitajika (kumbuka - kinachohitajika pekee!) cha aina ya thamani ambayo itawekwa kwenye kamba ya pato:

b - hoja inayofuata kutoka kwenye orodha ni pato kama nambari ya binary
c - ishara na msimbo maalum katika hoja huonyeshwa
d - nambari kamili
f - nambari ya hatua inayoelea
o - nambari kamili ya octal
s - kamba ya tabia
x - nambari kamili ya heksadesimali yenye herufi ndogo a-z
X ni nambari kamili ya heksadesimali yenye herufi kubwa A-Z

Hapa kuna jinsi ya kutaja usahihi wa nambari za sehemu zinazoelea:

$ pesa1 = 68.75;
$ pesa2 = 54.35;
$ pesa = $ pesa1 + $ pesa2;
// echo $money itatoa "123.1"...
$iliyoumbizwa = sprintf("%01.2f", $fedha);
// echo $iliyoumbizwa itatoa "123.10"!

Hapa kuna mfano wa kutoa nambari kamili inayotanguliwa na nambari inayohitajika ya sufuri:

$isodate=sprintf("%04d-%02d-%02d",$year,$month,$day);

Hufasiri mfuatano kulingana na umbizo na huingiza maadili katika vijiwezo.

Sintaksia:

Mchanganyiko wa sscanf(string str, umbizo la kamba [, kamba var1 ...])

Chaguo za kukokotoa sscanf() ni kinyume cha chaguo la kukokotoa printf().

Inatafsiri kamba kulingana na umbizo, sawa na printf() vipimo.

Wakati hoja mbili pekee zimebainishwa, thamani zinazotokana hurejeshwa katika safu.

// kupata nambari ya serial $serial = sscanf("SN/235-0001", "SN/%3d-%4d");
echo $serial*10000+$serial; // matokeo: 2350001
// na tarehe ya uzalishaji$date = "Januari 01 2000";
list($month, $day, $year) = sscanf($date, "%s %d %d");
echo "Tarehe: $year-".substr($mwezi,0,3)."-$dayn";
// matokeo: 2000-Jan-01

Wakati wa kutaja vigezo vya ziada vya hiari (vinapaswa kupitishwa kwa kumbukumbu)

kazi inarudisha nambari yao. Vigezo hivyo ambavyo havipokei maadili havizingatiwi katika thamani ya kurudi.

// toa rekodi ya XML kutoka kwa kamba $auth = "765tLewis Carroll";
$n = sscan($auth,"%dt%s %s", &$id, &$first, &$last);
mwangwi"
$ kwanza
$ mwisho
n";

fprintf()

Maelezo:

Int fprintf (kipimo cha rasilimali, umbizo la kamba [, args mchanganyiko])

Huandika mfuatano ulioundwa kwa kutumia mfuatano wa umbizo kwenye mkondo ambao mpini wake unapitishwa kushughulikia. Hoja ya umbizo inajadiliwa kwa kina katika maelezo ya kazi ya sprintf().

fprintf(): pedi na sufuri


kurudi;

fprintf($fp, "%04d-%02d-%02d", $year, $mwezi, $siku);
// huandika tarehe iliyoumbizwa hadi tarehe ya faili.txt
?>

fprintf(): kupangilia maadili ya pesa

ikiwa (!($fp = fopen("currency.txt", "w")))
kurudi;

$ pesa1 = 68.75;
$ pesa2 = 54.35;
$ pesa = $ pesa1 + $ pesa2;
// echo $pesa itatoa "123.1";
$len = fprintf($fp, "%01.2f", $fedha);
// kamba "123.10" imeandikwa kwa sarafu ya faili.txt

echo "$len bytes iliyoandikwa kwa faili currency.txt";
?>

vfprintf()

Huandika mfuatano ulioumbizwa kwa mtiririko (PHP 5)

Maelezo:

Int vfprintf (kipimo cha rasilimali, umbizo la kamba, safu ya args)

Huandika mfuatano, ulioumbizwa kulingana na umbizo, kwa rasilimali ya mtiririko iliyobainishwa na mpini. Uumbizaji unafanywa sawa na sprintf().

Inafanya kazi sawa na fprintf(), lakini inachukua safu ya hoja badala ya idadi tofauti ya hoja.

Hurejesha urefu wa mfuatano wa pato.

Tazama pia: printf(), sprintf(), sscanf(), fscanf(), vsprintf(), na number_format().
Mifano

vfprintf(): nambari kamili zisizo na pedi

ikiwa (!($fp = fopen("date.txt", "w")))
kurudi;

vfprintf($fp, "%04d-%02d-%02d", safu($year, $month, $day));
// itaandika tarehe ya ISO iliyoumbizwa hadi tarehe.txt
?>

vprintf()

Inatoa mfuatano ulioumbizwa (PHP 4 >= 4.1.0, PHP 5)

Maelezo:

Int vprintf(muundo wa kamba, safu ya args)

Hutoa thamani za safu ya args, iliyoumbizwa kulingana na hoja ya umbizo iliyofafanuliwa katika hati za chaguo za kukokotoa za sprintf().

Chaguo hili la kukokotoa ni sawa na printf(), lakini inachukua safu badala ya idadi tofauti ya hoja.

Hurejesha urefu wa mfuatano wa pato

muundo_wa_ nambari()

Huumbiza nambari kwa kutenganisha kikundi (PHP 3, PHP 4, PHP 5)

Maelezo:

Umbizo_la_nambari ya mfuatano (nambari ya kuelea [, desimali int])

umbizo_la_ nambari (nambari ya kuelea, desimali int, kamba dec_point, mfuatano wa maelfu_sep)

number_format() inarudisha nambari iliyoumbizwa. Kazi huchukua hoja moja, mbili, au nne (sio tatu):

Ikiwa hoja moja tu itapitishwa, nambari itaundwa bila sehemu ya sehemu, lakini kwa koma (",") kati ya vikundi vya nambari za 3.

Ikiwa hoja mbili zitapitishwa, nambari itaumbizwa na desimali baada ya vipindi (".") na koma (",") kati ya vikundi vya tarakimu za 3.

Ikiwa hoja zote nne zitapitishwa, nambari itaumbizwa kwa desimali baada ya kipindi na kwa kitenganishi kati ya vikundi vya tarakimu za 3, kwa kutumia dec_point kama nukta ya desimali na thousands_sep kama kitenganishi cha kikundi.

Herufi ya kwanza pekee ya maelfu_sep ndiyo inatumika. Kwa mfano, ukipitisha foo kama thousands_sep kufomati nambari 1000, number_format() inarudisha 1f000.

Mfano wa kutumia number_format()

Nchini Ufaransa, ni kawaida kutumia sehemu 2 za desimali (","), na nafasi (" ") kama kitenganishi cha kikundi. Umbizo hili linapatikana kwa kutumia nambari ifuatayo:

$ nambari = 1234.56;

// Umbizo la Kiingereza (chaguo-msingi)
$english_format_number = number_format($number);
// 1,234

// muundo wa Kifaransa
$nombre_format_francais = number_format($number, 2, ",", " ");
// 1 234,56

$ nambari = 1234.5678;

// Umbizo la Kiingereza bila vitenganishi vya kikundi
$english_format_number = number_format($number, 2, ".", "");
// 1234.57

kamba sprintf(muundo wa kamba [, args mchanganyiko])

Hurejesha mfuatano ulioundwa kwa kutumia umbizo la mfuatano wa mfuatano.

Kamba ya umbizo ina maagizo: herufi za kawaida (isipokuwa %), ambazo zimenakiliwa kwenye safu ya matokeo, na maelezo ya mabadiliko , ambayo kila mmoja hubadilishwa na moja ya vigezo. Hii inatumika pia kwa fprintf() , sprintf() Na printf() .

Kila kibainishi cha ubadilishaji kina ishara ya asilimia (%) kikifuatwa na kipengele kimoja au zaidi za ziada (kwa mpangilio ulivyoorodheshwa hapa):

    Hiari kiashiria cha pedi , ambayo inabainisha ni herufi gani itatumika kuweka matokeo kwa urefu unaohitajika. Hii inaweza kuwa nafasi au 0. Chaguo msingi ni nafasi. Herufi mbadala inaweza kubainishwa na " . Tazama mifano hapa chini.

    Hiari kifafanuzi cha upatanishi , ambayo huamua usawa wa kushoto au kulia. Kwa chaguo-msingi ni iliyokaa na haki, - kutumika kwa ajili ya alignment kwa upande wa kushoto.

    Nambari ya hiari kibainisha upana , ambayo hubainisha idadi ya chini ya herufi ambayo matokeo ya ubadilishaji huu yatakuwa nayo.

    Hiari kifafanuzi cha usahihi , ambayo hubainisha ni sehemu ngapi za desimali za kuonyesha kwa nambari za sehemu zinazoelea. Ina maana tu kwa aina ya data ya nambari kuelea. (Ili kuunda nambari pia ni rahisi kutumia kazi muundo_wa_ nambari() .)

  1. Aina ya kibainishi , ambayo inabainisha jinsi ya kushughulikia aina ya data ya hoja. Aina halali:

    % ni alama ya asilimia. Hoja haitumiki.
    b - hoja inachukuliwa kama nambari kamili na matokeo kama nambari ya binary.
    c - hoja inachukuliwa kama nambari kamili na matokeo kama mhusika aliye na nambari inayolingana ya ASCII.
    d - hoja inachukuliwa kama nambari kamili na hutolewa kama nambari ya desimali iliyotiwa saini.
    e - hoja inatafsiriwa kama kuelea na ni pato katika nukuu za kisayansi (kwa mfano 1.2e+2).
    u - hoja inachukuliwa kama nambari kamili na hutolewa kama nambari ya desimali ambayo haijatiwa saini.
    f - hoja inatafsiriwa kama kuelea na inatolewa kama nambari ya sehemu ya decimal inayoelea.
    o - hoja inachukuliwa kama nambari kamili na pato kama nambari ya octal.
    s - hoja inachukuliwa kama kamba.
    x - hoja inachukuliwa kama nambari kamili na hutolewa kama nambari ya hexadecimal (katika herufi ndogo).
    X - hoja inachukuliwa kama nambari kamili na hutolewa kama nambari ya hexadecimal (katika herufi kubwa).

Tangu PHP 4.0.6, kamba ya umbizo inasaidia kuhesabu na kupanga upya vigezo. Kwa mfano:


Nambari hii itatoa "Kuna nyani 5 kwenye mti". Sasa fikiria kwamba kamba ya umbizo iko katika faili tofauti, ambayo itatafsiriwa kwa lugha nyingine, na tunaiandika tena kama hii:

Mfano 2: Kubadilisha mpangilio wa vigezo

$format = "%s ina nyani %d" ;

?>
Kuna tatizo: mpangilio wa vibainishi vya ubadilishaji haulingani na mpangilio wa hoja. Hatutaki kubadilisha msimbo, na tunahitaji kubainisha ni hoja gani inayolingana na kiashiria kipi cha ubadilishaji.

Mfano 3: Kubadilisha mpangilio wa vigezo

Umbizo la $ = "%2\$s ina nyani %1\$d";
printf (umbizo la $, $num, eneo la $);
?>
Nambari ya hoja ina matumizi mengine: hukuruhusu kuchapisha hoja sawa mara kadhaa bila kupitisha vigezo vya ziada kwa kazi.