PHP si MySql (Programator Web 2)

DOCUMENTATIE CURS

Tipuri de date

In PHP, in functie de valorile primite, variabilele au un anumit tip de date.

Important
Spre deosebire de alte limbaje (C, Java), programarea in limbajul PHP implica mult mai putin efort in lucrul cu variabile pentru ca este un limbaj "weakly typed" (sau "loosely typed") adica:
  • NU trebuie sa declaram tipul de date al unei variabile (ex: int x;) ... folosim direct variabila respectiva, atribuindu-i o valoare (ex: $a = 3;)
  • tipul de date al unei variabile va fi determinat de tipul valorii atribuite
  • aceeasi variabila isi poate schimba tipul de date pe parcursul executiei unui program



1
2
3
4
5
<?php
$a = 3; // a este de tip integer
$a = 'abc'; // a este acum de tip string
?>


Schimbarea tipului de date al unei variabile
Tipul de date al unei variabile poate fi schimbat in urmatoarele conditii:
  • prin atribuirea unei valori variabilei respective
  • conversia explicita - convertim variabila la un anumit tip de date, cu ajutorul functiei settype(). Ex: setttype($a, 'string'). $a are acum tipul string.
  • cast - intr-un anumit context, fortam tipul de date al variabilei; acest lucru se obtine punand tipul de date nou intre paranteze, urmat de variabila. ex: $b = (string)$a; Desi $b are valoarea lui $a convertita la string, tipul variabilei $a este neschimbat. Asta inseamna ca tipul variabilei $a este fortat la string doar in expresia respectiva.
  • conversia automata - in PHP se realizeaza conversii implicite (automate) in functie de locul (contextul, operatia, operanzii) in care este folosita o anumita variabila. Variabila nu-si schimba tipul de date decat in acel context (expresie), cand este evaluata.
Acest subiect este dezbatut pe larg in capitolul Conversia intre tipuri de date.

Tipuri de date in PHP
In PHP exista urmatoarele tipuri de date:
  • tipuri de date scalare - ce pot avea o singura valoare:
    • int sau integer - tip de date folosit pentru a reprezenta numerele intregi. inclusiv cele negative (ex: $a = -4; // a este int)
    • float - tip de date folosit pentru a reprezenta numerele cu zecimale (ex: $a = 2.3; // a este float)
    • string - valori ce reprezinta sir de caractere. Se scriu intre apostroafe sau ghilimele. (ex: $a = 'acasa'; // a este string)
    • bool sau boolean - acest tip de date poate avea doar doua valori, adevarat sau fals Aceste valori sunt cuvintele cheie TRUE sau FALSE si sunt case-insensitive.
  • tipuri de date compuse - variabilele ce au acest tip sunt formate din informatii compuse, fiecare informatie putand avea alt tip de date:
    • array - acest tip de date este compus din mai multe elemente. Fiecare element este o pereche formata dintr-o cheie si o valoare. Cheile pot fi intregi sau stringuri, valorile pot avea orice tip de date
    • object - o colectie de variabile (proprietati) si functii (metode)
  • tipuri de date speciale:
    • resource - variabilele din tipul resource sunt folosite pentru a memora informatii externe programului (referinta catre un fisier deschis, rezultatul interogarii unui tabel dintr-o baza de date, etc)
    • NULL - tip de date ce indica faptul ca o variabila nu este setata.
*Atat in aceasta documentatie cat si in cea oficiala se vorbeste despre tipul de date numar (number) ce se refera de fapt la faptul ca acea valoare este un int sau un float.
Verificarea tipului de date

Functia gettype($var) primeste ca parametru o variabila, si returneaza tipul de date al variabilei respective. Functia va returna: boolean, integer, double (echivalent cu float), string, array, object, resource, NULL

Nota
Manualul PHP nu recomanda folosirea acestei functii pentru a testa daca o variabila are un anumit tip. Pentru acest lucru, se recomanda folosirea functiilor ce incep cu "is_".


Functiile destinate testarii tipului de date al unei variabile, sunt:
  • is_int($var) - verifica daca $var are tipul int
  • is_float($var) - verifica daca $var are tipul float
  • is_bool($var) - verifica daca $var are tipul bool sau boolean
  • is_string($var) - verifica daca $var are tipul string
  • is_array($var) - verifica daca $var are tipul array
  • is_null($var) - verifica daca $var are tipul null. Acest tip de date permite o singura valoare, valoarea NULL; asta inseamna ca implicit variabila are valoarea NULL, deci nu este setata.
  • is_numeric($var) - verifica daca $var este un numar (int sau float) sau un string numeric, ex: "23"
  • is_scalar($var) - verifica daca $var are un tip scalar, adica unul din tipurile: int, float, boolean sau string.
  • is_object($var) - verifica daca $var este de tip object
  • is_resource($var) - verifica daca $var este de tip resource


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
<?php
$a = 3;
echo gettype($a); // output: integer
echo ' ';
$b = 2.45;
echo gettype($b); // output: double
echo ' ';
$c = 'abc';
echo gettype($c); // output: string
echo ' ';
$d = true;
echo gettype($d); // output: boolean
echo ' ';
$e = array(2, 3, 4);
echo gettype($e); // output: array 
echo ' ';
?>
1
integer double string boolean array




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
<?php
$a = 3;
if (is_int($a)) { // true
  echo 'este intreg. '; // afiseaza
 }
$a = 'ceva';
if (is_int($a)) { // false
  echo 'este string. '; // nu afiseaza
 }
if (is_string($a)) { // true
  echo 'acum este string. '; // afiseaza
 }
$a = 3.3;
if (is_numeric($a)) { // true
  echo '3.3 este numeric. ';
 }
$a = '243';
if (is_numeric($a)) { // true
  echo "stringul '243' este numeric. "; // afiseaza
 }
?>
1
este intreg. acum este string. 3.3 este numeric. stringul '243' este numeric.


Afisarea informatiilor despre o variabila se poate face si cu var_dump($arg1, $arg2....);. var_dump() primeste un numar variabil de argumente si afiseaza pentru fiecare variabila valoarea si tipul variabilei si eventual alte informatii (lungime, elemente componente pentru variabilele array, object).

Sursa script Sursa HTML in browserVizualizare in browser
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$a = 3;
var_dump($a);
echo '<br>';
$a = -12.4;
var_dump($a);
echo '<br>';
$a = 'abc123';
var_dump($a);
echo '<br>';
$a = array('a', 1, -2.3);
var_dump($a);
echo '<br>';
?>
1
2
3
4
5
6
7
8
9
10
11
12
int(3)
<br>float(-12.4)
<br>string(6) "abc123"
<br>array(3) {
  [0]=>
  string(1) "a"
  [1]=>
  int(1)
  [2]=>
  float(-2.3)
}
<br>
int(3)
float(-12.4)
string(6) "abc123"
array(3) { [0]=> string(1) "a" [1]=> int(1) [2]=> float(-2.3) }


© 2006-2012 Crystal Mind Academy. All rights reserved