PHP si MySql (Programator Web 2)

DOCUMENTATIE CURS

Conversia intre tipuri de date

Acest capitol este o continuare a capitolului Tipuri de date. Vorbesc despre modul in care variabilele isi schimba tipul de date in PHP. Spuneam ca o variabila isi schimba tipul de date prin: atribuirea unei valori, conversie explicita cu settype(), prin cast ($a = (int)$x) sau prin conversie automata. De multe ori in PHP variabilele din scriptul nostru vor "suferi" conversia automata in functie de contextul in care sunt implicate sau de operatorii dintre ele.

Nota
In aceasta documentatie, cand vorbesc despre "conversia la un tip de date" sau este "evaluarea ca un anumit tip de date" ma refer de multe ori la conversia automata (deci temporara) in care variabila nu-si schimba tipul de date decat in cadrul expresiei respective, si ramane apoi cu tipul de date original.


Sursa script Sursa HTML in browser
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
$i = 0;
/*
in cadrul constructiei if, expresia dintre paranteze este evaluata ca boolean.
intregul 0 evaluat ca boolean este FALSE
*/
if ($i) {
  echo 'fals'; 
 }
var_dump($i);
$i = -17;
if ($i) {
  echo 'orice intreg diferit de zero e evaluat boolean la true';
  echo "\n";
 }
var_dump($i);
$a = 1;
$b = 'text';
/*
intr-o comparatie, daca avem un numar, ambii operanzi sunt convertiti la numar.
'text' convertit la intreg este 0.
1 > 0
*/
if ($a > $b) {
  echo 'adevarat';
 }
?>
1
2
3
4
int(0)
orice intreg diferit de zero e evaluat boolean la true
int(-17)
adevarat




Nota
Alt exemplu de conversie automata ne ofera operatorul +. Cand unul din operanzi este float atunci ambii operanzi sunt evaluati ca float. Altfel, operanzii sunt evaluati ca intregi.


Sursa script Sursa HTML in browser
1
2
3
4
5
6
7
8
9
10
11
<?php
$a = 2.3 + "5";
var_dump($a);
$a = 5 + true;
var_dump($a);
$a = 2 + false + 'text' + '33text';
var_dump($a)
?>
1
2
3
float(7.3)
int(6)
int(35)


© 2006-2012 Crystal Mind Academy. All rights reserved