Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zerofill w PHP
Forum PHP.pl > Forum > Przedszkole
Foxer
Witam.

W zmiennej mam zapisaną pewną liczbę (np. 123). Jednak chcę aby była wyświetlana z trzema zerami na przedzie (tzn. aby była to liczba 6 cyfrowa): 000123. Jeżeli miałbym liczbę 4 cyfrową (np. 1234) to liczba z przodu wypełniałaby się dwoma zerami itd.

Czy jest na to szybki sposób? Funkcja php? Proszę o pomoc smile.gif.
peterj
W zmiennej $liczba masz jakąs liczbe.
  1. <?php
  2. $liczba = &#092;"123\";
  3. $ile = strlen($liczba);
  4. if ($ile == &#092;"1\"){
  5. print(&#092;"00000$liczba\");
  6. }
  7. if ($ile == &#092;"2\"){
  8. print(&#092;"0000$liczba\");
  9. }
  10. if ($ile == &#092;"3\"){
  11. print(&#092;"000$liczba\");
  12. }
  13. if ($ile == &#092;"4\"){
  14. print(&#092;"00$liczba\");
  15. }
  16. if ($ile == &#092;"5\"){
  17. print(&#092;"0$liczba\");
  18. }
  19. if ($ile == &#092;"6\"){
  20. print(&#092;"$liczba\");
  21. }
  22. ?>
FiDO
Dziekuje peterj za skuteczne rozsmieszenie mnie biggrin.gif

  1. <?php
  2. printf(&#092;"%06d\", $liczba);
  3. ?>
peterj
hehe nie widziałem, że tak można laugh.gif moje też działa, ale troche malo poręczne winksmiley.jpg
Foxer
Dzięki Panowie, zwłaszcza FiDO, za poręczny sposób smile.gif.
Mam jeszcze jedno pytanie co się tyczy tych "ZER", otóż:

Co jeżeli chciałbym zmienioną (z zerami) liczbę zapisać w zmiennej, nie wyświetlając wyniku tak jak to robi printf. Chciałbym uzyskać coś takiego:
  1. <?php
  2. $liczba = coś(&#092;"%06d\", $liczba);
  3. ?>

Czy jest taka funkcja która spełniałaby to "coś"? Jak tą zmienioną już postać zapisać w zmiennej?

Zaczynam się mieszać blink.gif
FiDO
Wyslij sie troche i zajrzyj do manuala do opisu funkcji printf. Znajdziesz tam rozwiazanie.
Foxer
Czytałem manualową definicję printf już wiele razy i tam nie znalazłem rozwiązania. Natomiast, dosyć przypadkowo natrafiłem na funkcję sprintf(), która właśnie NIE wyświetla wyniku, a można go zapisać w zmiennej:
  1. <?php
  2. $a = 123;
  3. echo $a . '<br>';
  4. $a = sprintf(&#092;"%06d\", $a);
  5. echo $a;
  6. ?>
FiDO
W opisie printf byl wlasnie link do sprintf jako funkcji podobnej.. liczylem na to ze dojdziesz do tego smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.