Tipuri de variabile
Variabilele pot fi de mai multe tipuri, nu doar numere. PHP are opt tipuri de variabile. Patru dintre acestea sunt tipuri scalare (boolean, integer, float si string), doua sunt tipuri compuse (array si object), iar alte doua sunt tipuri speciale (resource si null). De asemenea, din motive de lizibilitate, au fost introduse trei pseudotipuri: mixed, number si callback. Mai exista si tipul double, dar semnificatia acestuia este aceeasi cu cea a tipului float. Cele doua denumiri coexista doar din motive "istorice". In PHP, de obicei, tipul unei variabile nu este specificat de catre programator, ci este stabilit in timpul executiei in functie de contextul in care este folosita variabila.
Tipul boolean: Variabilele de acest tip pot avea doar doua valori: ADEVARAT sau FALS. Aceste valori pot fi indicate prin cuvintele cheie TRUE sau FALSE (pentru ambele nu se face distinctie intre literele mari si literele mici). Exista posibilitatea de a converti o variabila de orice tip la tipul boolean. In momentul efectuarii unei conversii, sunt convertite la valoarea FALSE urmatoarele valori:
- numarul intreg 0;
- numarul real 0.0;
- sirul vid;
- sirul "0";
- un vector fara nici un element;
- un obiect fara nici o variabila membru;
- o variabila de tipul NULL;
- o variabila nedefinita.
Orice alta valoare este convertita la valoarea TRUE (inclusiv resursele).
Acest tip se poate folosi de exemplu pentru verificarea logarii intr-o pagina de administrare. Dupa ce se fac verificarile, daca utilizatorul este logat ca administrator, functia noastra va returna o valoare de adevar: TRUE daca este logat sau FALSE daca nu este si astfel vom sti daca sa ii acordam sau nu acces in sectiunea de administrare.
Tipul integer: O variabila de tip integer reprezinta o valoare din multimea numerelor intregi. Aceste numere pot fi specificate in baza 10, in baza 16 sau in baza 8, conventiile fiind aceleasi ca si in limbajele C/C++ sau Java. Modul de reprezentare depinde de platforma utilizata; de obicei se foloseste reprezentarea pe 32 de biti. Interpretorul PHP nu ofera suport pentru numerele intregi fara semn. Trebuie remarcat faptul ca in PHP nu exista nici un operator pentru efectuarea de impartiri intregi. De exemplu, rezultatul operatiei 3/2 nu va fi numarul intreg 1 (ca in C/C++ sau Java), ci numarul real (float) 1.5
Si pentru numerele intregi exista posibilitatea efectuarii de conversii:
- valoarea logica TRUE este convertita la valoarea intreaga 1;
- valoarea logica FALSE este convertita la valoarea intreaga 0;
- un numar real este convertit prin "rotunjire inspre 0"; asadar, valoarea reala 2.5 va fi convertita la valoarea intreaga 2, in timp ce valoarea reala -2.5 va fi convertita la valoarea intreaga -2;
- un sir de caractere este convertit luand in considerare doar primele caractere care contin informatii numerice; asadar sirul "10" va fi convertit la valoarea intreaga 10; de asemenea sirul "10 ani" va fi convertit tot la valoarea 10; daca primele caractere nu contin informatii numerice, rezultatul conversiei va fi valoarea 0.
Tipul float: O variabila de tip float poate fi specificata folosind fie forma zecimala, fie cea stiintifica (cu exponent). La fel ca si in cazul tipului integer, precizia variabilelor de tipul float este dependenta de platforma utilizata. De obicei se foloseste standardul IEEE 64. Exista posibilitatea de a converti o variabila de orice tip la tipul float. Pentru numerele reale se pot efectua urmatoarele conversii:
- un sir de caractere este convertit luand in considerare doar primele caractere care contin informatii numerice; asadar sirul "10.2" va fi convertit la valoarea reala 10.2; sirul "1.23E1 ani" va fi convertit la valoarea 12.3;
- in toate celelalte cazuri se realizeaza conversii la numere intregi care apoi sunt convertite la valorile reale corespunzatoare.
Tipul string: O variabila de tip string reprezinta un sir de caractere. Un caracter se reprezinta pe un octet, deci sunt 256 de caractere distincte. Acest lucru implica faptul ca interpretorul PHP nu ofera suport nativ pentru setul de caractere Unicode. Lungimea variabilelor de tip string nu este limitata de catre interpretor. Literalii de tip sir de caractere pot fi specificati in trei moduri diferite:
- prin folosirea ghilimelelor simple (exemplu $a='acesta este un sir de caractere'). Pentru a avea in cadrul sirului simbolul "`", atunci inaintea acestuia trebuie scris caracterul "\", iar pentru a putea specifica simbolul "\" acesta trebuie dublat.
- prin folosirea ghilimelelor duble. Folosind aceasta notatie pot fi specificate mai multe caractere speciale, pe langa caracterele de la varianta anterioara, printre care: sfarsit de linie ("\r"), rand nou ("\n"), tab orizontal ("\t"), semnul dolar ("\$"), ghilimelele duble ("\""), secvente de caractere pentru specificarea faptului ca o expresie regulara este in notatie octala ("\[0-7]{1,3}") si secventele de caractere pentru specificarea faptului ca o expresie regulara este in notatie hexazecimala ("\x[0-9A-Fa-f]{1,2}"). Cel mai important lucru este acela ca, folosind acest mod de specificare a literalilor de acest tip, numerele de variabile care apar in interior vor fi transformate in valoarea lor. De exemplu daca $a este o variabila de tipul integer si are valoarea 2, atunci sirul de caractere "Variabila a are valoarea $a." va fi transformat in sirul "Variabila a are valoarea 2".
- notatia heredoc. Acest tip de notatie a fost introdus la versiunea 4 a interpretorului PHP. Pentru a specifica un sir de caractere folosind aceasta notatie trebuie utilizat operatorul "<<<" urmat de un identificator ales de utilizator. Toate caracterele care se afla intre operatorul "<<<" urmat de un identificator pe o singura linie, si acelasi identificator pe o alta linie vor constitui valoarea sirului de caractere. De exemplu, instructiunea:
$str=<<<SF
Acesta este un exemplu
de utilizare a sintaxei
heredoc
SF;
va avea ca rezultat un sir de caractere format din trei linii de text.
Pentru a accesa un anumit caracter din sirul de caractere se foloseste, dupa numele variabilei de tip string, indicile caracterului care trebuie accesat scris intre acolade. De exemplu, $str{0} returneaza primul caracter din sirul de caractere $str.
In cazul in care dorim sa concaternam doua siruri de caractere vom folosi operatorul "." Folosirea operatorului "+" nu va concaterna cele doua siruri.
Exista posibilitatea de a converti o variabila de orice tip la tipul string. Pentru sirurile de caractere se pot efectua urmatoarele conversii:
- valoarea logica TRUE va fi convertita la sirul "1", iar valoarea logica FALSE va fi convertita la sirul vid ("");
- un numar intreg va fi convertit la un sir de caractere care reprezinta valoarea numarului in baza 10;
- un numar real va fi convertit la un sir de caractere care reprezinta notatia stiintifica a acestuia;
- obiectele sunt intotdeauna convertite la sirul "Object";
- variabilele de tipul resource sunt convertite la sirul "Resource id #n", unde n reprezinta un numar unic atasat resursei respective de catre interpretorul PHP;
- valoarea NULL este convertita la sirul vid ("").
Tipul array - Vectorii in PHP sunt niste multimi formate din chei. Fiecarei chei din vector i se ataseaza o valoare. Acest tip de date este optimizat astfel incat sa poata fi folosit in locul urmatoarelor structuri de date: liste, tabele de dispersie, dictionare, colectii, stive, cozi si altele. Datorita faptului ca o valoare poate fi reprezentata de un alt vector, se pot simula foarte usor arborii n-dimensionali sau tablourile n-dimensionale. Valoarea unei variabile de tip vector se poate specifica folosind constructia
array (cheie => valoare, cheie => valoare, ...)
De exemplu, urmatoarea instructiune PHP va construi un vector cu doua elemente, dintre care unul este de tip string, iar celalalt de tip boolean:
$a = array ("ch" => "string", 12 => TRUE);
Variabila $a reprezinta un ector, $a ["ch"] are valoarea string, iar $a [12] are valoarea TRUE.
In cazul in care nu se specifica o cheie pentru o valoare, atunci acea valoare va fi atasata unei chei care va fi cheia maxima de tip integer folosita anterior, la care se adauga valoarea 1. Cheile pot avea si valori negative. Daca nu exista chei de tip integer, atunci valoarea va fi atasata cheii 0. De exemplu, urmatoarele doua instructiuni sunt echivalente:
array (5 => 43, 32, 56, "b" => 12);
array (5 => 43, 6 => 32, 7 => 56, "b" => 12);
Daca se foloseste valoarea logica TRUE ca si cheie, atunci aceasta va fi convertita la cheia de tip intreg 1, iar valoarea FALSE va fi convertita la numarul intreg 0. Nu se pot folosi pentru chei variabile de tipul array sau object.
O variabila de tip array se poate modifica prin setarea explicita de valori. De exemplu instructiunea $a ["x"] = 42; adauga in vectorul $a valoarea 42 atasata cheii "x". Daca se foloseste un vector care nu a fost definit anterior, atunci acesta este creat automat. Asadar printr-o instructiune de forma $a [5] = 42, in cazul in care vectorul $a nu exista, atunci se va crea un vector cu un singur element. Cheia acestuia va fi numarul intreg 5, iar valoarea sa va fi 42.
De asemenea, exista posibilitatea de a crea un element nou fara a-i preciza cheia. Sintaxa are forma $vector [] = valoare; aceasta instructiune are ca efect adaugarea unui element a carui cheie este un numar intreg mai mare cu 1 decat cel mai mare numar intreg care este cheie a unui alt element al vectorului. Daca nu exista nici o astfel de cheie, atunci noul element va avea cheia 0. De exemplu, urmatoarele doua secvente sunt echivalente:
$a [5] = 1; ............................ $a [5] = 1;
$a [6] = 2; ............................ $a [] = 2;
Prin conversia la un vector a unei variabile de tip scalar (boolean, integer, float, string) sau resource se creeaza un vector cu un singur element; cheia acestui element este numarul intreg 0, iar valoarea este cea a variabilei convertite.
Daca se converteste un obiect (variabila de tip object), atunci vectorul rezultat va contine cate un element pentru fiecare variabila membru a obiectului. Cheile elementelor vor fi date de denumirile proprietatilor obiectului (variabilele membru ale obiectului), iar valorile elementelor vor fi valorile proprietatilor obiectului.
Daca realizam o conversie a unei variabile de tip NULL, atunci rezultatul va fi un vector vid (care nu contine nici un element).
In continuare sunt prezentate cateva exemple care descriu mai detaliat posibilitatile oferite de folosirea vectorilor in PHP. Pentru inceput, prezint un vector al carui elemente reprezinta caracteristicile unei portocale:
$a = array (`denumire` => `portocala`,
`familie` => `citrice`,
`culoare` => `portocaliu`,
`forma` => `rotunda`,
`gust` => `dulce`
);
Putem adauga si alte elemente care sa reprezinte diferite alte proprietati. De exemplu, am putea avea nevoie de o valoare suplimentara careia nu dorim sa ii atribuim nici un nume de identificare (cheie). Pentru ca vectorul sa contina un element suplimentar cu valoarea 4, vom putea defini vectorul astfel:
$v = array (`denumire` => `portocala`,
`familie` => `citrice`,
`culoare` => `portocaliu`,
`forma` => `rotunda`,
`gust` => `dulce`
4
);
Cheia elementului cu valoarea 4 va fi numarul intreg 0 deoarece nu exista nici o alta cheie care este numar intreg. O alternativa de construire a acestui vector este urmatoarea:
$v [`denumire`] = `portocala`;
$v [`familie`] = `citrice`;
$v [`culoare`] = `portocaliu`;
$v [`forma`] = `rotunda`;
$v [`gust`] = `dulce`;
$v [] = 4;
Exemplul urmator ilustreaza cum puteti folosi vectorii la afisarea unei pagini cu text colorat:
Scriptul PHP | Rezultatul scriptului |
$colors = array (`red`, `green`, `blue`, `silver` ); foreach ($colors as $color) { echo "<FONT size = 4 color = $color>"; echo "<b>Acest text este <i>$color!</i>"; echo "</b></FONT><br>"; } | Acest text este red ! Acest text este green ! Acest text este blue ! Acest text este silver ! |
Tipul object: Pentru a defini un obiect care poate fi folosit pentru afisarea mesajului SALUTARE LUME! se scrie urmatoarea secventa:
class salutare {
function Displaysalutare () {
echo "SALUTARE LUME!";
}
}
Pentru a utiliza o variabila de tip obiect va trebui sa realizam o instantiere prin intermediul instructiunii new. Sintaxa este:
$a = new salutare;
Astfel, variabila $a devine un obiect ale carui metode pot fi utilizate. Pentru afisarea propriu-zisa a mesajului va trebui sa executam metoda Displaysalutare() printr-o instructiune de tipul $a -> Displaysalutare();
Orice variabila de un anumit tip poate fi convertita intr-un obiect. Daca variabila respectiva este un obiect, atunci ea nu va fi modificata. In caz contrar, efectul conversiei este crearea unei noi instante a clasei stdClass. Daca variabila are tipul NULL, atunci noua instanta va fi vida. In toate celelalte cazuri instanta va contine o variabila membru numita scalar a carei valoare va fi cea a variabilei convertite. Pentru conversii vom folosi instructiuni de tipul $obiect = (object) "SALUTARE LUME!". Dupa realizarea conversiei vom putea tipari mesajul SALUTARE LUME! folosind instructiunea echo $obiect->scalar;
Tipul resource: Variabilele de tip resource sunt folosite pentru pastrarea unor referinte catre anumite resurse externe cum ar fi conexiuni la baze de date, fisiere, etc. Resursele sunt create si utilizate de anumite functii speciale. Datorita specificului acestui tip de date valoarea nici unei variabile de alt tip nu poate fi convertita la tipul resource.
Tipul NULL: Valoarea speciala NULL este atribuita oricarei variabile care nu a fost initializata. Aceasta valoare este singura pe care o pot avea variabilele de tip NULL. Se considera ca o variabila are tipul NULL daca:
- i s-a atribuit constanta NULL;
- nu a fost initializata;
- a fost dezinitializata (prin intermediul functiei unset () ).
Link-ul autorului:
www.tutoriale.far-php.ro
Comentarii
Voteaza acest articol!
Trimite un comentariu!