Ce face intval
intval citește numărul de la începutul unui text și se oprește la primul caracter care nu se potrivește: "12abc" devine 12, iar "abc" devine 0. Numerele cu zecimale sunt tăiate, nu rotunjite.
Scrierea (int) $valoare face același lucru și este mai des folosită. intval are în plus parametrul $base, pentru texte în altă bază de numerație.
Parametri
| Parametru | Descriere |
|---|---|
$value |
Valoarea transformată. |
$base |
Opțional. Baza în care este scris textul (de exemplu 16 sau 2). Cu 0, baza se deduce din prefix: 0x, 0b, 0. |
Ce returnează
Numărul întreg. Pentru texte fără număr la început returnează 0.
Exemple
Exemplul 1: Transformări uzuale
<?php
var_dump(intval("42"));
var_dump(intval("12abc"));
var_dump(intval("abc"));
var_dump(intval(42.99));
var_dump(intval(" 7 "));
var_dump(intval(true));
Rezultat
int(42)
int(12)
int(0)
int(42)
int(7)
int(1)
Exemplul 2: Alte baze de numerație
<?php
var_dump(intval("ff", 16));
var_dump(intval("0x1A", 16));
var_dump(intval("101", 2));
var_dump(intval("0b11", 0));
Rezultat
int(255)
int(26)
int(5)
int(3)
Exemplul 3: Id dintr-un URL
<?php
$_GET = ["id" => "15; DROP TABLE"];
$id = intval($_GET["id"]);
echo "SELECT * FROM articole WHERE id = $id";
Rezultat
SELECT * FROM articole WHERE id = 15
Greșeli frecvente
- Te aștepți la rotunjire:
intval(2.9)este 2. Folosește întâiround. - Folosești
intvalca validare.intval("abc")returnează 0 fără nicio eroare. Verifică întâi cuis_numericsaufilter_var.
Comenzi înrudite
floatval: Transformă o valoare în număr cu zecimale (float).is_numeric: Verifică dacă o valoare este un număr sau un text care arată ca un număr.round: Rotunjește un număr la cel mai apropiat întreg sau la un număr de zecimale.