Funkcja PHP printf() | #! Shebang

Funkcja PHP printf()

Funkcja PHP printf() wyświetla na ekranie łańcuch sformatowany za pomocą specjalnego szablonu zwanego łańcuchem formatowania (ang. format string), czyli zestawu opcji określających sposób prezentacji.

Składnia funkcji PHP printf()

Funkcja PHP printf() ma następującą składnię:

printf(string $format, mixed ...$values): int

Parametry funkcji PHP printf()

Parametr Opis
format Parametr obowiązkowy. Parametr ten reprezentuje łańcuch formatowania, który składa się z dwóch typów elementów: zwykłych znaków przenoszonych do wyniku bezpośrednio, bez żadnych zmian, oraz specyfikacji konwersji (ang. conversion specification), których blok zaczyna się od pojedynczego znaku %. Składnia specyfikacji konwersji jest następująca:

%[nr_arg$][flagi][szerokość][.dokładność]specyfikator

Znaczenie poszczególnych elementów specyfikacji konwersji:

nr_arg — liczba całkowita zakończona znakiem dolara. Określa, którego argumentu dotyczy dany specyfikator. W poniższym kodzie na przykład specyfikator dotyczy drugiego argumentu reprezentującego wartość:


printf("Twój wynik to %2$'_15.2f", 45678, 25.3954545);

flagi — dostępne są następujące flagi:

  • - — wyrównanie wartości do lewej w obrębie pola, którego szerokość określa parametr szerokość. Wyrównanie do prawej jest ustawieniem domyślnym.
  • + — powoduje, że przed liczbami dodatnimi jest dodawany znak + (znak minus przed liczbami ujemnymi jest dodawany domyślnie).
  • spacja — dopełnienie wartości spacjami do szerokości pola (ustawienie domyślne).
  • 0 — dopełnienie wartości z lewej strony zerami. Jeśli zostanie użyty specyfikator s, to flagę tę można wykorzystać także w celu dopełnienia wartości z prawej.
  • 'znak — dopełnia wartość znakiem podanym za pojedynczym cudzysłowem prostym (kiedy używana jest ta opcja, cały argument funkcji printf() musi znajdować się w podwójnym cudzysłowie prostym.

szerokość — szerokość pola można określić na dwa sposoby — wpisując liczbę całkowitą lub znak *:

  • Liczba całkowita — określa minimalną szerokość pola, w którym prezentowana ma być wartość. Jeśli na przykład wartość jest liczbą 1234, a parametrowi szerokości nadamy wartość 15, to zostanie utworzone pole o szerokości 15 miejsc, w którym wartość 1234 zostanie umieszczona w sposób zgodny z pozostałymi ustawieniami (takimi jak strona wyrównania czy znak dopełnienia).
  • * — jeśli w miejscu szerokości zostanie wpisana gwiazdka, to szerokość pola będzie określana przez wartość argumentu poprzedzającego argument reprezentujący formatowaną wartość, np.:
    
    printf("Twój wynik to %2$0*s", 10, 25.39);

    Wynik:

    Twój wynik to 0000025.39
    

dokładność — ten parametr określa liczbę miejsc po przecinku w sformatowanej wartości. Składa się z kropki i następującej po niej liczby całkowitej, określającej dokładność, lub z kropki i gwiazdki. Znaczenie gwiazdki zależy od specyfikatora, a jej wartość jest pobierana z argumentu bezpośrednio poprzedzającego argument formatowanej wartości:

  • Specyfikatory e, E, f i F: liczba cyfr po przecinku (domyślnie 6).
  • Specyfikatory g, G, h i H: maksymalna liczba znaczących cyfr, jaka ma zostać wydrukowana.
  • s: określa miejsce ucięcia, czyli działa jako limit znaków w łańcuchu.

Przykład:


printf("Twój wynik to %2$015.*f", 7, 25.123456789);

Wynik:

Twój wynik to 0000025.1234568

Jeśli wydaje Ci się, że po przecinku jest 8 cyfr, to dobrze się przyjrzyj. Jest ich 7, tylko końcówka została zaokrąglona do 8.

specyfikator — dostępne są następujące specyfikatory:

  • % — dosłownie znak procent, który nie pobiera żadnego argumentu.
  • b — argument jest traktowany jako liczba całkowita i prezentowany jako liczba binarna.
  • c — argument jest traktowany jako liczba całkowita i prezentowany jako znak ASCII o tym numerze. Ignoruje dopełnienie i szerokość.
  • d — argument jest traktowany jako liczba całkowita i prezentowany jako liczba dziesiętna ze znakiem.
  • e — argument jest traktowany jako liczba w notacji naukowej PHP.
  • E — argument jest traktowany jako liczba w notacji naukowej, ale z użyciem wielkiej litery E.
  • f — argument jest traktowany jako liczba zmiennoprzecinkowa i prezentowany jako liczba zmiennoprzecinkowa z uwzględnieniem lokalizacji.
  • f — argument jest traktowany jako liczba zmiennoprzecinkowa i prezentowany jako liczba zmiennoprzecinkowa bez uwzględnienia lokalizacji.
  • g — formatuje liczby zmiennoprzecinkowe w taki sposób, aby uzyskać jak najbardziej czytelny i zwarty sposób prezentacji przy użyciu notacji zmiennoprzecinkowej lub naukowej, np.:
    
    printf("%.3g", 250.395); // Wynik: 250

Jak to działa:

  1. Przyjmujemy parametr P, którego wartość jest równa wartości precyzji, jeśli została określona i jest różna od zera, wynosi 6, jeśli precyzja nie została określona, lub wynosi 1, jeśli precyzja została ustawiona na 0. Uwaga: precyzja oznacza liczbę znaczących cyfr, nie liczbę cyfr po przecinku.
  2. Następnie sprawdzamy wartość wykładnika, gdybyśmy interesującą nas wartość przedstawili w notacji naukowej i tę wartość wykładnika przedstawiamy jako parametr X.
  3. Jeśli P > X ≥ −4, to zostaje wybrana konwersja typu f, a liczba miejsc po przecinku wynosi P – (X + 1). W przeciwnym przypadku zostaje wybrana konwersja typu e i liczba miejsc po przecinku wynosi P − 1.

Aby ułatwić zrozumienie tego algorytmu, wykonamy szczegółowe obliczenia dla przykładu przedstawionego powyżej:

  1. Nasza specyfikacja formatu to %.3g, a więc precyzja została określona i ma wartość 3, więc P = 3.
  2. W notacji naukowej liczbę 250.395 można przedstawić jako 2,50395 × 102, czyli wykładnik ma wartość 2, więc X = 2.
  3. Podstawiamy wartości do wzoru: 3 > 2 ≥ –4. Nierówność jest prawdziwa, więc wybrana zostaje konwersja typu f — nasza wartość zostanie przedstawiona jako liczba zmiennoprzecinkowa.
  4. Obliczamy liczbę miejsc po przecinku ze wzoru: 3 – (2 + 1) = 3 – 3 = 0.

Wszystko się zgadza: 250 to liczba dziesiętna składająca się z trzech pierwszych cyfr znaczących formatowanej wartości i nieposiadająca cyfr po przecinku.

  • G — to samo, co g, tylko używa E i f.
  • h — to samo, co g, tylko używa F (opcja dostępna od PHP 8.0.0).
  • H — to samo, co g, tylko używa E i F (opcja dostępna od PHP 8.0.0).
  • o — argument jest traktowany jako liczba całkowita i prezentowany jako liczba ósemkowa.
  • s — argument jest traktowany i prezentowany jako łańcuch (wartość typu PHP string).
  • u — argument jest traktowany jako liczba całkowita i prezentowany jako liczba dziesiętna bez znaku.
  • x — argument jest traktowany jako liczba całkowita i prezentowany jako liczba szesnastkowa (z małymi literami).
  • x — argument jest traktowany jako liczba całkowita i prezentowany jako liczba szesnastkowa (z wielkimi literami).
Uwaga: jeśli wartość zmiennej jest innego typu niż oczekiwany przez specyfikator, to zostanie odpowiednio przekonwertowana.
values Parametr obowiązkowy. Wartości wykorzystywane przez specyfikację formatowania.

Wartość zwrotna

Funkcja PHP printf() zwraca długość sformatowanego łańcucha.

Typ zwrotny: int.

Dodatkowe przykłady

Rozbiór przykładu na czynniki

Aby ułatwić zrozumienie działania funkcji printf(), poniżej przedstawiam szczegółowy opis konkretnego przykładu:


printf("Twój wynik to %2$'_15.*f pkt.", 3, 25.3954545);

Wynik:

Twój wynik to _________25.395 pkt.
  1. Twój wynik to — zwykły tekst, który zostanie bez zmian przeniesiony do wyniku.
  2. % — początek specyfikacji formatowania.
  3. 2$ — określenie, którego argumentu dotyczy dana specyfikacja.
  4. '_ — określa znak dopełnienia wartości.
  5. 15 — szerokość pola, w którym prezentowana jest wartość.
  6. .* — oznacza, że liczba miejsc po przecinku jest określona przez argument bezpośrednio poprzedzający ten, który reprezentuje formatowaną wartość.
  7. f — oznacza, że formatowana wartość ma być traktowana jako liczba zmiennoprzecinkowa.
  8. pkt. — zwykły tekst, który zostanie bez zmian przeniesiony do wyniku.

Prezentacja wartości jako liczby binarnej

Poniższe wywołanie funkcji PHP printf() przedstawi przekazaną wartość w formacie binarnym:


printf("Liczba binarna: %b", 21);

Prezentacja wartości jako liczby ósemkowej

Poniższe wywołanie funkcji PHP printf() przedstawi przekazaną wartość w formacie ósemkowym:

printf("Liczba ósemkowa: %o", 21);

Prezentacja wartości jako liczby szesnastkowej

Poniższe wywołanie funkcji PHP printf() przedstawi przekazaną wartość w formacie szesnastkowym z małymi literami:


printf("Liczba szesnastkowa: %x", 21);

Prezentacja liczby w notacji naukowej

Poniższe wywołanie funkcji PHP printf() przedstawi przekazaną wartość w notacji naukowej:


printf("Notacja naukowa: %e", 123456789);

Znak ASCII o określonym numerze

Poniższe wywołanie funkcji PHP printf() wyświetli znak ASCII o podanym numerze:


printf("Znak ASCII: %c", 126);
Udostępnij:
Share

Podobał Ci się ten artykuł?

Oceń go!

Średnia 5 / 5. Liczba głosów: 1

Jeszcze nikt nie głosował. Wyprzedź innych i zagłosuj.

Skoro spodobał Ci się ten artykuł...

Poleć go znajomym!

Ojej :( Powiedz nam, co powinniśmy poprawić!

blank
Podoba Ci się ta strona?

Pomóż nam się rozwijać, wykupując płatne konto. Dzięki temu będziemy mogli tworzyć dla Ciebie jeszcze więcej ciekawych treści, a Ty pozbędziesz się reklam.

Dodaj komentarz