Wszystkie dane przetwarzane w PHP są określonego typu. Na przykład liczba całkowita, ciąg znaków lub boolean (prawda/fałsz).
Typy podstawowe są również nazywane prymitywnymi typami danych lub typami skalarnymi.
| Typ | Nazwa | Opis |
|---|---|---|
int| Integer | (integer) Zawiera tylko liczby całkowite. Maksymalna wartość jest określana przez liczbę bitów. W 32-bitowym PHP zakres ten wynosi od-2 147 483 648do-2 147 483 647(~ ± 2 miliardy), w 64-bitowym PHP zakres ten wynosi od-9 223 372 036 854 775 808do-9 223 372 036 854 775 807(~ ± 9 kwintylionów). Wartość maksymalną można zawsze uzyskać przez wywołanie stałejPHP_INT_MAX. Jeśli maksymalna wartość liczby całkowitej zostanie przekroczona, PHP przedstawi tę liczbę jakofloat` i automatycznie ją nadpisze. |
||
Float| Floating Point Decimal | Jest to odmiana liczby zmiennoprzecinkowej, dla której obowiązuje zasada *"im mniejsza, tym dokładniejsza "*. Liczba jest przechowywana wewnętrznie jako tak zwana **mantysa** i **eksponent**, więc w rzeczywistości przechowywane są dwie liczby, między którymi wykonywana jest operacjamantysa * (2^eksponent), co umożliwia przechowywanie naprawdę ogromnego zakresu liczb. Wykorzystuje to zasadę, że w przypadku dużych liczb nie zawsze musimy znać ich dokładną wartość, ale chcemy zaoszczędzić jak najwięcej pamięci. Liczby typufloat` nie muszą być przechowywane dokładnie i nie powinny być używane do obliczania wartości pieniężnych. |
||
string |
String | Zawiera sekwencję znaków, które są ograniczone cudzysłowami lub apostrofami. Maksymalna długość jest ograniczona jedynie pojemnością pamięci operacyjnej. Łańcuch może być zapisany w dowolnym kodowaniu, zawierać emoji lub dane binarne. |
bool |
Boolean | (boolean) Wartość logiczna z algebry booleańskiej, może zawierać tylko true lub false. |
null |
wartość pusta | Wartość pusta null jest przydatna w przypadkach, gdy chcemy wyrazić, że coś nie istnieje. Na przykład artykuł nie ma kategorii. Czasami null jest niepoprawnie zastępowany przez null (0) lub pusty łańcuch (''), ale nie jest to dobre rozwiązanie dla wyrażenia nieistnienia. |
Ostrzeżenie: Typ null nie jest skalarny.
Wielu programistów ma problem ze zrozumieniem różnicy między 0 (zero) a null (wartość nieistniejąca), gdy rozpoczynają pracę nad projektem.
To rozróżnienie można bardzo dobrze i humorystycznie wyjaśnić na poniższym obrazku:

Niektóre typy można konwertować między sobą. Docelowy typ danych jest określany za pomocą nawiasów okrągłych i można go określić w dowolnym miejscu aplikacji, na przykład podczas wyliczania wartości.
Na przykład:
$pi = 3.14;echo $pi; // prints 3.14echo (int) $pi; // drukuje 3
Rozważmy następujące dwie zmienne:
$x = 10;$y = '10';
Jaka jest różnica między zawartością zmiennych $x i $y?
Zmienna $x jest liczbą, $y jest łańcuchem (zawierającym "1" i "0"), więc jeśli tylko przechowamy zmienną w pamięci i nie wykonamy żadnej operacji, która wpłynie na jej wartość. Na przykład dwa poniższe wpisy dadzą ten sam wynik:
echo $x + 5; // drukuje 15echo $y + 5; // drukuje 15
W drugim przypadku następuje tak zwane nadpisanie dynamiczne, czyli zmienna zmienia swój typ danych tak, aby można było wykonać na niej operację obliczeniową. Nie zawsze można polegać na tym zachowaniu i jest ono raczej zachowaniem korekcyjnym, służącym do poprawiania źle napisanych skryptów dla początkujących. Jeśli to możliwe, zawsze zapisuj liczby z typem danych do ich przechowywania, ponieważ zwiększa to ich precyzję i ułatwia ich wykorzystanie w przyszłości.
Uwaga: Należy pamiętać, że nie możemy konwertować typów danych w sposób całkowicie dowolny, więc nie zawsze jest to możliwe. W przypadku nadpisania typu danych na inny (niekompatybilny) typ, konwersja może w ogóle nie nastąpić, albo oryginalna zawartość może zostać uszkodzona lub całkowicie zniszczona i zastąpiona inną. Na przykład, jeśli łańcuch znaków zostanie przekształcony na liczbę całkowitą (a w zmiennej zostanie zapisany tekst, który nie jest liczbą), w zmiennej zostanie zapisana wartość
1zamiast wartości liczbowej.
Porównując wartości, należy brać pod uwagę różne typy danych.
Ogólnie rzecz biorąc, operator == jest używany do ogólnego porównywania dwóch wartości (niezależnie od typu), natomiast === porównuje zarówno wartości, jak i typ danych.
Na przykład:
$a = '';$b = null;if ($a == $b) {// Zostanie ocenione jako TRUE, ponieważ// konwertowany jest typ danych.}if ($a === $b) {// Wykonuje znacznie bardziej rygorystyczną walidację// i nie przejdzie, ponieważ jest to inny// treść i inny typ danych, dlatego// ten kod nigdy nie zostanie uruchomiony.}
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články a novinky nejen ze světa PHP a programování. Nenechte si ujít jediný článek.
Články píše Jan Barášek © 2009-2025 | Kontakt | Mapa webu
Status | Aktualizováno: ... | pl