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;
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';
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) |
|