← Lekcje
PHP · lekcja 12

Funkcje wbudowane 2/2: gotowe funkcje na liczby i typy

Dzisiaj kończycie temat funkcji wbudowanych:

  1. Na poprzedniej lekcji poznaliście funkcje gotowe na tekst - dziś kolej na liczby i typy danych
  2. Trzy funkcje: round() (zaokrąglanie), var_dump() (pokazuje typ zmiennej), date() (format daty i czasu)
  3. var_dump() pokazuje coś, czego nie widać w zwykłym echo: typ zmiennej
  4. Ćwiczenie: number-functions.php z zaokrąglaniem, typami i datą
Rozgrzewka · 3 minuty

Rozgrzewka: funkcje na tekst

  1. Co zwróci trim(" Ala ma kota ")?
  2. W jakiej kolejności str_replace() przyjmuje argumenty: czego szuka, na co zamienia, w czym szuka?
  3. Czym różni się funkcja wbudowana od funkcji, którą sami zdefiniowaliście na wcześniejszych lekcjach?
Część 1 · Funkcja, co robi, przykład

Trzy funkcje na liczby i typy

Funkcja Co robi Wynik round(4.5) zaokrągla do najbliższej liczby całkowitej 5 round(4.49) ta sama funkcja, inny argument 4 var_dump($value) pokazuje typ zmiennej obok jej wartości int(5) / float(4.5) / string(1) "5" date("d.m.Y") zwraca datę we wskazanym formacie liter np. 15.06.2030

Samych funkcji na liczby (dziedzina „Math Functions”) jest w PHP kilkadziesiąt - od abs() do sqrt(). Ciekawostka z PHP Manual: round() ma trzeci argument z trybem zaokrąglania - domyślny PHP_ROUND_HALF_UP zaokrągla dokładną połowę w górę (2,5 → 3), a PHP_ROUND_HALF_EVEN zaokrągla 1,5 i 2,5 oba do 2, do najbliższej liczby parzystej.

PHP Manual: przegląd funkcji na liczby, function.round.php, function.var-dump.php, function.date.php · php.net/manual/en/ref.math.php · ciekawostka: „Rounds num towards the nearest even value when it is half way there, making both 1.5 and 2.5 into 2” · php.net/manual/en/function.round.php
Część 2 · round() zaokrągla liczbę

round(): próg w połowie drogi

4,0 4,5 (próg) 5,0 4,49 round() → 4 round() → 5

Tak jak kasjer: 4,50 zł zaokrągla w górę do 5 zł, a 4,49 zł w dół do 4 zł. Drugi argument round($num, $precision) ustala liczbę miejsc po przecinku - domyślnie 0.

PHP Manual: „Returns the rounded value of num to specified precision… precision can also be negative or zero (default)” · php.net/manual/en/function.round.php
Część 3 · var_dump() pokazuje typ i wartość

var_dump(): typ obok wartości

Wywołanie var_dump() pokazuje Co to znaczy var_dump($intValue) int(5) liczba całkowita var_dump($floatValue) float(4.5) liczba z częścią po przecinku var_dump($stringValue) string(1) "5" napis, długość 1 znak

Ta sama piątka może być liczbą (5) albo napisem w cudzysłowie ("5") - w echo wyglądają tak samo, var_dump() pokazuje różnicę.

PHP Manual: „This function displays structured information about one or more expressions that includes its type and value” · php.net/manual/en/function.var-dump.php
Część 4 · date() i litery formatu

date(): litera → co pokazuje

Litera Co pokazuje Przykładowe wartości d dzień miesiąca, dwie cyfry z zerem wiodącym 01 do 31 m miesiąc jako liczba, z zerem wiodącym 01 do 12 Y pełny rok, co najmniej 4 cyfry np. 2030 H godzina w formacie 24-godzinnym, z zerem wiodącym 00 do 23 i minuty, z zerem wiodącym 00 do 59

Wasz kod: date("d.m.Y") dla przykładowej chwili → 15.06.2030. Litery sami wybieracie, PHP tylko podstawia wartości.

PHP Manual: tabela znaków formatu · php.net/manual/en/datetime.format.php
Egzamin INF.03

Tak pytają na egzaminie

1. Które wywołanie funkcji PHP round() zwróci wartość 1?

  1. round(0.29)
  2. round(0.60)
  3. round(-1.40)
  4. round(-4.60)

2. Program PHP wyświetla aktualny czas w postaci godzina:minuta:sekunda, np. 15:38:20. Czas sformatowany w ten sposób zostanie zwrócony przez funkcję

  1. date("H:i:s");
  2. date("G:m:s");
  3. time("H:i:s");
  4. time("G:m:s");
CKE, EE.09, styczeń 2023, zadanie 7 · CKE, EE.09, styczeń 2022, zadanie 12 (bank pytań, przedmiot strony, temat php)
Ćwiczenie przy komputerze · 20 minut

Ćwiczenie: number-functions.php

  1. W folderze swojego serwera (np. htdocs) utwórz plik number-functions.php.
  2. Zapisz do $a wynik round(4.5), do $b wynik round(4.49) i wypisz obie wartości.
  3. Utwórz $intValue = 5;, $floatValue = 4.5;, $stringValue = "5"; i wywołaj var_dump() dla każdej.
  4. Wypisz echo date("d.m.Y"); - pokaże dzisiejszą datę w Twoim formacie.
  5. Sprawdź w przeglądarce pod localhost/number-functions.php - mają się pojawić wszystkie wyniki.

Ma się pojawić: 5, potem 4, potem int(5), float(4.5), string(1) "5", na końcu dzisiejsza data w formacie DD.MM.RRRR.

Bonus, jeśli starczy czasu: dopisz var_dump(is_int($stringValue)); i echo gettype($stringValue); - sprawdź, co wypisze, mimo że $stringValue wygląda jak liczba.

Zasady pracowni
Na koniec

Sprawdź się

  1. Ile wynosi round(4.49), a ile round(4.5)? Dlaczego wyniki są różne, mimo że różnica argumentów to tylko 0,01?
  2. Co pokazuje var_dump(), czego nie pokazuje zwykłe echo?
  3. Skąd date() wie, jakie litery użyć do dnia, miesiąca i roku?

To była ostatnia lekcja tematu funkcji wbudowanych - na następnej: programowanie obiektowe, klasy i obiekty.

Poza szkołą

A jak to wygląda w produkcji?

Na lekcjiW produkcjiStatus
round() na liczbie zmiennoprzecinkowej (float)Przy liczeniu pieniędzy liczby zmiennoprzecinkowe są ryzykowne (błędy zaokrąglenia). PHP Manual zaleca liczenie w najmniejszej jednostce (np. groszach) jako liczbach całkowitych.nadal w użyciu (obie metody, zależnie od zastosowania)
var_dump() wypisywany wprost do przeglądarkiDebugowanie zwykle idzie przez narzędzia typu Xdebug albo widok zmiennych wbudowany w edytor, bez zaśmiecania działającej strony.nadal w użyciu (jako szybki podgląd)
date() zwraca datę według strefy czasowej serweraProdukcyjne aplikacje ustawiają strefę czasową jawnie (date_default_timezone_set() albo klasy DateTime/DateTimeImmutable), żeby data nie zależała od domyślnych ustawień serwera.nadal w użyciu
PHP Manual: „Floating-point numbers have limited precision… never trust floating-point number results to the last digit” · php.net/manual/en/language.types.float.php