Numere în PHP
Numerele în PHP au trei forme principale:
IntegerFloatNumeric Strings
Vei mai întâlni și două valori numerice speciale:
InfinityNaN
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:
Ieșire: script PHP
<?php
$a = 5;
$b = 5.34;
$c = "25";
var_dump($a);
var_dump($b);
var_dump($c);
?>
Tipuri de variabile numerice
Fiecare dintre aceste variabile își primește tipul de la valoarea atribuită:
<?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 disponibilPHP_INT_MIN- cel mai mic număr întreg disponibilPHP_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:
Ieșire: script PHP
<?php
$x = 5985;
var_dump(is_int($x));
$y = 59.85;
var_dump(is_int($y));
?>
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 PHPPHP_FLOAT_MIN- cel mai mic float pozitiv pe care îl poate reprezenta PHPPHP_FLOAT_DIG- câte cifre zecimale rămân fără nicio pierdere după rotunjirea într-un float și înapoiPHP_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:
Ieșire: script PHP
<?php
$x = 10.365;
var_dump(is_float($x));
?>
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:
Ieșire: script PHP
<?php
$x = 1.9e411;
var_dump(is_infinite($x));
?>
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:
Ieșire: script PHP
<?php
$x = acos(8);
var_dump($x);
// Verifică dacă valoarea nu este un număr (NaN)
var_dump(is_nan($x));
?>
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:
Ieșire: script PHP
<?php
$x = 5985;
var_dump(is_numeric($x));
$x = "5985";
var_dump(is_numeric($x));
$x = "59.85" + 100;
var_dump(is_numeric($x));
$x = "Hello";
var_dump(is_numeric($x));
?>
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ă:
Ieșire: script PHP
<?php
$x = 23465.768;
echo intval($x);
echo "\n";
$x = "23465.768";
echo intval($x);
?>