Conversia de tip în PHP
Conversia de tip (type casting) înseamnă transformarea deliberată a unei valori în alt tip de date, de exemplu a unui float într-un număr întreg. În loc să lași decizia pe seama lui PHP, alegi tu tipul pe care îl va avea o variabilă.
Sintaxa este scurtă: scrie tipul dorit între paranteze chiar înaintea variabilei sau a valorii.
Iată operatorii de conversie:
(string)- dă un String(int)- dă un Integer(float)- dă un Float(bool)- dă un Boolean(array)- dă un Array(object)- dă un Object(unset)- învechit; dă NULL
Conversie la String
Pune (string) în fața unei variabile sau a unei valori ca să o transformi într-un șir de caractere.
Exemplu de conversie la string
Cinci valori de tipuri diferite devin șiruri de caractere, iar var_dump() confirmă rezultatul. Observă că true devine „1”, iar NULL devine un șir de caractere gol:
Ieșire: script PHP
<?php
$a = 5; // Număr întreg
$b = 5.34; // Număr zecimal
$c = "hello"; // Șir de caractere
$d = true; // Boolean
$e = NULL; // NULL
$a = (string) $a;
$b = (string) $b;
$c = (string) $c;
$d = (string) $d;
$e = (string) $e;
// Folosește var_dump() pentru a verifica tipul de date
var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);
var_dump($e);
?>
Conversie la Integer
Obții un număr întreg când (int) stă chiar înaintea unei variabile sau a unei valori.
Exemplu de conversie la integer
Aici, valori de mai multe tipuri sunt convertite la integer. Scriptul face doar conversiile, așa că nu afișează nimic:
Ieșire: script PHP
<?php
$a = 5; // Număr întreg
$b = 5.34; // Număr zecimal
$c = "25 km"; // Șir de caractere
$d = "km 25"; // Șir de caractere
$e = "hello"; // Șir de caractere
$f = true; // Boolean
$g = NULL; // NULL
$a = (int) $a;
$b = (int) $b;
$c = (int) $c;
$d = (int) $d;
$e = (int) $e;
$f = (int) $f;
$g = (int) $g;
?>
Conversie la Float
Pentru un float, scrie (float) în fața variabilei sau a valorii.
Exemplu de conversie la float
Din nou, valorile sunt doar convertite, de data aceasta la float, așa că nu se afișează nimic:
Ieșire: script PHP
<?php
$a = 5; // Număr întreg
$b = 5.34; // Număr zecimal
$c = "25 km"; // Șir de caractere
$d = "km 25"; // Șir de caractere
$e = "hello"; // Șir de caractere
$f = true; // Boolean
$g = NULL; // NULL
$a = (float) $a;
$b = (float) $b;
$c = (float) $c;
$d = (float) $d;
$e = (float) $e;
$f = (float) $f;
$g = (float) $g;
?>
Conversie la Boolean
Dacă scrii (bool) înaintea unei variabile sau a unei valori, obții un boolean.
Rezultatul este false pentru 0, NULL, false și orice este gol. Orice altceva devine true, inclusiv numerele negative precum -1.
Exemplu de conversie la boolean
Aici, nouă valori sunt convertite la boolean. Doar $c, $g și $i devin false, deși scriptul nu afișează nimic:
Ieșire: script PHP
<?php
$a = 5; // Număr întreg
$b = 5.34; // Număr zecimal
$c = 0; // Număr întreg
$d = -1; // Număr întreg
$e = 0.1; // Număr zecimal
$f = "hello"; // Șir de caractere
$g = ""; // Șir de caractere
$h = true; // Boolean
$i = NULL; // NULL
$a = (bool) $a;
$b = (bool) $b;
$c = (bool) $c;
$d = (bool) $d;
$e = (bool) $e;
$f = (bool) $f;
$g = (bool) $g;
$h = (bool) $h;
$i = (bool) $i;
?>
Conversie la Tablou
Folosește (array) înaintea unei variabile sau a unei valori ca să obții un tablou.
Rezultatul depinde de ce ai la început. Majoritatea tipurilor devin un tablou indexat cu un singur element, iar NULL devine un tablou gol.
Un obiect devine un tablou asociativ: fiecare nume de proprietate se transformă într-o cheie, iar fiecare valoare de proprietate în valoarea acelei chei.
Exemplu de conversie la tablou
Fiecare dintre aceste valori devine un tablou. Nu apare niciun rezultat, deoarece scriptul nu le afișează niciodată:
Ieșire: script PHP
<?php
$a = 5; // Număr întreg
$b = 5.34; // Număr zecimal
$c = "hello"; // Șir de caractere
$d = true; // Boolean
$e = NULL; // NULL
$a = (array) $a;
$b = (array) $b;
$c = (array) $c;
$d = (array) $d;
$e = (array) $e;
?>
Transformă un obiect în tablou
Aici, un obiect Car devine un tablou, iar var_dump() îi arată cele două proprietăți drept chei:
Ieșire: script PHP
<?php
class Car {
public $color;
public $model;
public function __construct($color, $model) {
$this->color = $color;
$this->model = $model;
}
public function message() {
return "Mașina mea este un " . $this->color . " " . $this->model . "!";
}
}
$myCar = new Car("red", "Volvo");
$myCar = (array) $myCar;
var_dump($myCar);
?>
Conversie la Object
Folosește (object) înaintea unei variabile sau a unei valori ca să obții un obiect.
Majoritatea tipurilor ajung un obiect cu o singură proprietate numită „scalar”, care păstrează valoarea originală. NULL dă un obiect gol.
Tablourile se transpun firesc în proprietăți. Într-un tablou indexat, fiecare număr de index devine un nume de proprietate; într-un tablou asociativ, fiecare cheie devine un nume de proprietate. În ambele cazuri, valorile tabloului devin valorile proprietăților.
Exemplu de conversie la object
Fiecare dintre aceste valori devine un obiect. Scriptul nu afișează nimic:
Ieșire: script PHP
<?php
$a = 5; // Număr întreg
$b = 5.34; // Număr zecimal
$c = "hello"; // Șir de caractere
$d = true; // Boolean
$e = NULL; // NULL
$a = (object) $a;
$b = (object) $b;
$c = (object) $c;
$d = (object) $d;
$e = (object) $e;
?>
Transformă tablouri în obiecte
Un tablou indexat și un tablou asociativ devin obiecte. Din nou, nu există niciun rezultat:
Ieșire: script PHP
<?php
$a = array("Volvo", "BMW", "Toyota"); // tablou indexat
$b = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43"); // tablou asociativ
$a = (object) $a;
$b = (object) $b;
?>
Conversie la NULL
Notă: PHP 7.2.0 a declarat învechită conversia (unset), iar PHP 8.0.0 a eliminat-o.
Ca să obții NULL astăzi, pur și simplu atribuie NULL variabilei:
Exemplu de conversie la NULL
Indiferent de tipul pe care îl avea înainte fiecare variabilă, după această atribuire este NULL. Nu se afișează nimic:
Ieșire: script PHP
<?php
$a = 5; // Număr întreg
$b = 5.34; // Număr zecimal
$c = "hello"; // Șir de caractere
$d = true; // Boolean
$e = NULL; // NULL
$a = NULL;
$b = NULL;
$c = NULL;
$d = NULL;
$e = NULL;
?>