Treci la conținutul principal

Numere în PHP

Numerele în PHP au trei forme principale:

  • Integer
  • Float
  • Numeric Strings

Vei mai întâlni și două valori numerice speciale:

  • Infinity
  • NaN

PHP creează o variabilă numerică imediat ce îi atribui un număr, fără să fie nevoie de o declarație separată.

Ori de câte ori nu ești sigur ce tip are o variabilă sau un obiect, transmite-l către var_dump().

Verificarea tipurilor de date

var_dump() raportează atât tipul, cât și valoarea, așa că poți vedea că $c este un șir de caractere, deși conține cifre:

Prompt
Scrie un script PHP care creează trei variabile: $a ca număr întreg 5, $b ca număr float 5.34 și $c ca șir de caractere "25", apoi folosește var_dump() pe fiecare pentru a afișa tipurile lor de date.
Ieșire: script PHP

Tipuri de variabile numerice

Fiecare dintre aceste variabile își primește tipul de la valoarea atribuită:

index.php
<?php
$a = 5;
$b = 5.34;
$c = "25";
?>

Funcția is_int() din PHP

Ca să verifici dacă o variabilă conține un număr întreg, folosește is_int().

Numerele întregi nu au parte zecimală, de exemplu 2, 256, -256, 10358 și -179567.

Intervalul lor depinde de sistem. Pe sistemele pe 32 de biți, un număr întreg merge de la -2147483648 la 2147483647, iar pe cele pe 64 de biți, de la -9223372036854775808 la 9223372036854775807. Dacă depășești oricare dintre limite, PHP stochează valoarea ca float.

Notă: Un calcul care implică un float dă tot un float. De exemplu, 4 * 2.5 este egal cu 10, dar acest 10 este stocat ca float, deoarece 2.5 este unul dintre operanzi.

Ține cont de aceste reguli când scrii numere întregi:

  • Este necesară cel puțin o cifră
  • Nu este permis punctul zecimal
  • Valoarea poate fi pozitivă sau negativă
  • Sunt disponibile patru notații: zecimală (baza 10), hexazecimală (baza 16, cu prefixul 0x), octală (baza 8, cu prefixul 0) și binară (baza 2, cu prefixul 0b)

PHP îți oferă și trei constante încorporate pentru numere întregi:

  • PHP_INT_MAX - cel mai mare număr întreg disponibil
  • PHP_INT_MIN - cel mai mic număr întreg disponibil
  • PHP_INT_SIZE - câți octeți ocupă un număr întreg

Verifică dacă variabila este un număr întreg

$x conține un număr întreg, iar $y nu, așa că doar prima verificare dă true:

Prompt
Scrie un script PHP care verifică dacă numărul întreg 5985 este un întreg folosind is_int() și var_dump(), apoi verifică dacă numărul float 59.85 este un întreg.
Ieșire: script PHP

Funcția is_float() din PHP

is_float() îți spune dacă o variabilă conține un float.

Valorile float sunt numere scrise cu punct zecimal sau în formă exponențială, de exemplu 2.0, 256.4, 10.358, 7.64E+5 și 5.56E-5.

Cât de mare poate fi un float depinde de platformă, dar o limită obișnuită este de aproximativ 1.7976931348623E+308, cu o precizie de până la 14 cifre.

Începând cu PHP 7.2, aceste constante încorporate descriu valorile float:

  • PHP_FLOAT_MAX - cel mai mare float pe care îl poate reprezenta PHP
  • PHP_FLOAT_MIN - cel mai mic float pozitiv pe care îl poate reprezenta PHP
  • PHP_FLOAT_DIG - câte cifre zecimale rămân fără nicio pierdere după rotunjirea într-un float și înapoi
  • PHP_FLOAT_EPSILON - cel mai mic x pozitiv pentru care x + 1.0 != 1.0

Verifică dacă variabila este de tip float

Valoarea 10.365 are punct zecimal, așa că verificarea dă true:

Prompt
Scrie un script PHP care verifică dacă valoarea 10.365 este de tip float folosind is_float() și var_dump().
Ieșire: script PHP

Infinit în PHP

Un float din PHP are un interval permis pe fiecare platformă. O valoare din interiorul acestui interval este considerată finită, iar is_finite() îți permite să verifici acest lucru.

O valoare din afara acestui interval este considerată infinită, iar asta verifică is_infinite().

Verifică dacă o valoare este infinită

1.9e411 este prea mare pentru un float, așa că PHP îl tratează ca infinit:

Prompt
Scrie un script PHP care verifică dacă valoarea 1.9e411 este infinită folosind is_infinite() și var_dump().
Ieșire: script PHP

NAN și funcția is_nan() în PHP

Numele NAN este prescurtarea de la „Not A Number”. Este ceea ce obții dintr-o operație matematică fără sens.

Ca să detectezi acest rezultat, transmite valoarea către is_nan().

Verificarea valorii NAN

Arccosinusul lui 8 nu este definit, așa că acos(8) produce NAN, iar is_nan() confirmă acest lucru:

Prompt
Scrie un script PHP care calculează acos(8), afișează rezultatul, apoi verifică dacă acesta este NaN folosind is_nan() și var_dump().
Ieșire: script PHP

Numere și șiruri de caractere numerice în PHP

Numerele nu sunt stocate întotdeauna ca numere; un text precum „5985” este un șir de caractere numeric. is_numeric() dă true pentru ambele cazuri și false pentru orice altceva.

Verifică dacă variabila este numerică

Aici doar „Hello” nu trece testul; numărul, șirul de caractere numeric și rezultatul adunării trec toate:

Prompt
Scrie un script PHP care verifică dacă 5985, "5985", "59.85" + 100 și "Hello" sunt numerice folosind is_numeric() și var_dump().
Ieșire: script PHP

PHP intval(): obținerea valorii întregi a unei variabile

Când ai nevoie de un număr întreg dintr-o variabilă, transmite-o către intval().

Obține valoarea întreagă

Un float și un șir de caractere dau amândouă 23465, deoarece partea zecimală este eliminată:

Prompt
Scrie un script PHP care obține valoarea întreagă a numărului float 23465.768 și a șirului de caractere "23465.768" folosind intval() și echo.
Ieșire: script PHP