Onko php:ssä valmista funktiota tarvittavien nollien lisäämiseen luvun alkuun? (En ainakaan heti manuaalista löytänyt)
Tähän tyyliin:
1 = 00001
70 = 00070
500 = 00500
Kiitos tuo toimii niin kuin pitääkin.
Tuossa on bugin vaara: jos stringin pituus ON JO 5 merkkiä, tulee vastauksena 5 nollaa!
Eli pitää tarkistaa myös stringin pituus. En ole varma miten tuo reagoi pelkän numeerisen arvon kanssa, mutta jos stringissä on kirjaimia, bugi on ilmeinen.
-W-
str_pad( $input, 5, '0', STR_PAD_LEFT );
Tässä on kattavampi esimerkki sprintf:n toiminnasta:
<?php echo sprintf("%05d\n", 1); echo sprintf("%05d\n", 12); echo sprintf("%05d\n", 123); echo sprintf("%05d\n", 1234); echo sprintf("%05d\n", 12345); echo sprintf("%05d\n", 123456); echo sprintf("%05d\n", 1234567); ?>
Tämä skripti tulostaa seuraavat rivit:
00001 00012 00123 01234 12345 123456 1234567
Nollia siis lisätään, jos luvussa on alle 5 numeroa, ja muuten luku säilyy sellaisenaan.
Liittyen edellämainittuun, ei kyseessä ollut bugi itse PHP:ssa vaan ongelma palvelimella. Jostain syystä palvelin väänsi sprintf("%05s", $arvo); muotoon 00000 jos stringin pituus oli jo 5 merkkiä. Ja ongelma oikeni kun palvelin jouduttiin buuttaamaan.
Tuohan on sinänsä oikein tuo Antin esimerkki siis eikä sen pitäisi tuottaa ongelmia kun ja jos kaikki toimii muuten ok.
-W-
Molemmat toimivat, mutta onhan niissä eroja:
Tämä Tsurigan str_pad( $input, 5, '0', STR_PAD_LEFT );
oli kuitenkin ihan uusi juttu mulle.
<?php echo sprintf("%05s", aaa4123),'<br>'; //aaa4123 echo sprintf("%05d", aaa12),'<br>'; //00000 echo sprintf("%07d", 12),'<br>'; //0000012 echo sprintf("%07d", 11),'<br>'; //0000011 echo str_pad( 23, 5, '0', STR_PAD_LEFT ),'<br>'; //00023 echo str_pad( 11222, 5, '0', STR_PAD_LEFT ),'<br>'; //11222 ?>
ja tässä muutkin argumentit:
https://www.php.net/manual/en/function.sprintf.
Aihe on jo aika vanha, joten et voi enää vastata siihen.