PHP&MYSQL

Acasă          |            E-mail        |       Cursuri-online.info      |     

Variabile

 

ATENTIE!In acest capitol veti intalni urmatoarele titluri: "Variabile si lucrul cu acestea" ;"Constante"; "Variabile predefinite"; "Tipuri de variabile".

--------------------------------------------------------------------------------------------------------

Variabile si lucrul cu acestea

O variabila este o zona de memorie caruia i se da un nume pentru a putea fi recunoscuta ulterior si pentru a ne putea referi mai tarziu la ea. Ca sa avem o variabila, trebuie sa ii atribuim si o valoare.
<?php
$autor = 'oriceon';
echo 'Acesta este un tutorial realizat de '.$autor.' ';

?>
Puneti codul intr-un fisier variabila.php, salvati si apoi vizualizati in browser accesand
http://localhost/variabila.php

 

Dupa cum vedeti, o variabila este construita dintr-un $ care se pune in fata ei, un = si ghilimele magice ‘ ‘ sau “ “ in interiorul carora se afla valoarea variabilei si apoi constructia este inchisa cu ;
In exemplul de mai sus avem declarata variabila cu numele autor si ca valoare textul oriceon
Nu uitati ca din constructia variabilei sa lipseasca cele de mai sus si anume $nume_variabila = ‘ ’; sau $nume_variabila = “ “;
Exemplul urmator contine o eroare, si intorcandu-ne din nou la cunostintele acumulate mai sus, in constructia echo si ghilimelele magice, vom incerca sa o rezolvam.
<?php
$autor = "oriceon';
echo 'Acesta este un tutorial realizat de '.$autor.' ';

?>
Codul acesta contine greseala la ghilimelele magice din constructia variabilei.
Vizualizand in browser, vom vedea eroarea de mai jos.
Modificati constructia $autor = “oriceon’; in $autor = ‘oriceon’; apoi vizualizati in browser.
Veti observa ca problema a fost rezolvata iar codul PHP functioneaza corect.

Trecand mai departe la explicarea codului de mai sus, ajungem la partea unde afisam variabila pe pagina cu ajutorul constructiei echo.
echo 'Acesta este un tutorial realizat de '.$autor.' ';
Dupa cum vedeti este un echo in care ca noutate apare adaugarea variabilei cu ajutorul constructiei ‘..’ si anume ‘.$autor.’. Aceasta constructie poate sa difere in functie de ghilimelele magice ale constructiei echo si anume:

1) Daca construtia echo este delimitata de ghilimele magice simple, adaugarea variabilei se face cu ‘..’ si anume ‘.$autor.’
2) Daca constructia echo este delimitata de ghilimele magice duble, adaugarea variabilei se face cu “..” si anume “.$autor.”
Aceeasi modalitate de adaugare o sa se foloseasca si pentru $_SESSION , $_POST , $_GET si alte variabile predefinite pe care le vom invata mai tarziu.
Daca variabila nu este adaugata corect, in sensul ca nu i se atribuie constructia corespunzatoare adaugarii, vom avea urmatoarea afisare in browser pentru codul urmator:
<?php
$autor = 'oriceon';
echo 'Acesta este un tutorial realizat de $autor ';

?>

Uitati-va la constructia afisarii variabilei $autor si observati ca nu este corecta deoarece nu are ‘..’.

Modificam codul din nou si o sa vedem o noua afisare gresita
<?php
$autor = 'oriceon';
echo 'Acesta este un tutorial realizat de ".$autor." ';

?>

Iar, intorcandu-ne la ghilimelele magice si constructia afisarii variabilei pe pagina, o sa ne aducem aminte unde am gresit.
In caz ca nu gasiti raspunsul la aceasta eroare, cititi cu o pagina mai sus.
Nota: Intr-un script php, puteti avea cate variabile doriti.
Exemplu:
<?php
$nume = 'orice';
$prenume = 'on';
$varsta = '20 ani';
$tara = 'Romania';
echo ' Ma numesc '.$nume.' '.$prenume.', am '.$varsta.' si locuiesc in '.$tara.'. ';

?>
Vizualizati in browser si rezultatul o sa fie:

Intr-o variabila puteti avea mai multe variabile cu continut diferit iar “lipirea” variabilelor se face cu .’ si respectiv ‘. si anume daca avem 2 variabile le vom uni astfel $variabila1.’ ‘.$variabila2
<?php
$nume = 'orice';
$prenume = 'on';
$nume_complet = $nume.' '.$prenume;
echo ' Ma numesc '.$nume_complet.' ';

?>

 

Daca doriti ca o variabila sa aibe ca valoare un text definit direct in ea si sa mai fie alaturat acelui text.. un altul dintr-o alta variabila, puteti folosi urmatorul cod PHP:
<?php
$nume = 'orice';
$prenume = 'on';
$nume_complet = 'Numele meu complet este '.$nume.' '.$prenume;
echo ' '.$nume_complet.' ';

?>
O singura variabila se poate afisa in browser si fara ajutorul ghilimelelor magice, si anume:
<?php
$nume = 'orice';
$prenume = 'on';
$nume_complet = 'Numele meu complet este '.$nume.' '.$prenume;
echo $nume_complet;

?>

--------------------------------------------------------------------------------------------------------

 

Constante

O constanta stocheaza o valoare, cum este si o variabila, dar aceasta valoare, dupa ce a fost stabilita, nu mai poate fi modificata in script.
Pentru a defini o constanta, ne vom folosi de functia define(); iar numele constantelor este scris cu MAJUSCULE, aceasta optiune nu este obligatorie, insa va face codul dumneavoastra mai frumos si mai lizibil.
O diferenta importanta intre constante si variabile, este faptul ca o constanta nu are in fata ei semnul $.
<?php
define('AUTOR', 'oriceon');
define('VARSTA', '20 ani');
echo AUTOR.' <br> '.VARSTA;

?>
Realizati o pagina cu numele define.php si apoi testati in browser pentru a observa rezultatele.

--------------------------------------------------------------------------------------------------------

Variabile predefinite

$GLOBALS = pot fi accesate toate variabilele globale care sunt accesibile script-ului PHP curent
$_SERVER = contine o serie de variabile ale caror valori sunt setate de server-ul web; majoritatea valorilor variabilelor din acest vector depind de mediul de executie al script-ului curent.
$_GET si $_POST contin variabile primite de script prin intermediul unor transferuri care folosesc metodele HTTP get, respectiv post. De exemplu, prin intermediul acestor vectori, pot fi accesate valorile campurilordintr-un formular care a fost completat si transmis folosind una dintre cele doua metode.
$_COOKIE contine valorile variabilelor care cuprind informatii referitoare la cookie-urile pastrate pe calculatorul utilizatorului ce acceseaza pagina web.
$_FILES contine variabile primite de script prin intermediul incarcarilor de fisiere prin metoda post.
$_ENV contine variabile disponibile prin intermediul mediului in care este executat.
$_REQUEST contine variabile disponibile prin intermediul oricarui tip de mecanism cu ajutorul caruia utilizatorul poate introduce date.
$_SESSION contine variabile care corespund sesiunii curente a script-ului.

--------------------------------------------------------------------------------------------------------

Tipuri de variabile

Tipul unei variabile se refera la genul de date care sunt introduse in ea.
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:
<?php
$a = array ('denumire' => 'portocala',
'familie' => 'citrice',
'culoare' => 'portocaliu',
'forma' => 'rotunda',
'gust' => 'dulce'
);
echo $a['denumire'].' <br> '.$a['familie'];

?>
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:
<?php
$v = array ('denumire' => 'portocala',
'familie' => 'citrice',
'culoare' => 'portocaliu',
'forma' => 'rotunda',
'gust' => 'dulce',

4
);
echo $v['denumire'].' <br> '.$v['familie'];

?>
Creati o pagina cu numele array1.php apoi testati in browser.

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:
<?php
$v['denumire'] = 'portocala';
$v['familie'] = 'citrice';
$v['culoare'] = 'portocaliu';
$v['forma'] = 'rotunda';
$v['gust'] = 'dulce';
$v[] = 4;
echo $v['denumire'].' <br> '.$v['familie'];

?>
Creati o alta pagina cu numele array2.php, introduceti codul de mai sus, apoi comparati cu rezultatul si codul din pagina array1.php.

 

Efectuati cateva exercitii cu array-uri pentru aprofundare.
Folosirea unor array-uri ce au in alcatuire alte array-uri.
<?php
$fructe = array (
'denumire' => array('p' => 'portocala', 'a' => 'ananas', 'm' => 'mar'),
'numere' => array(1, 2, 3, 4, 5, 6),
'ordine' => array('prima', 5 => 'a II-a', 'a III-a')
);
echo 'Denumire: '.$fructe['denumire']['p'].' - '.$fructe['denumire']['a'].' <br>';
echo 'Numere: '.$fructe['numere'][0].' - '.$fructe['numere'][1].' <br>';
echo 'Ordine: '.$fructe['ordine'][0].' - '.$fructe['ordine'][5].' <br>';

?>
Creati o pagina cu numele array3.php, introduceti codul de mai sus, apoi testati in browser.

Tipul object:

Pentru a defini un obiect care poate fi folosit pentru afisarea mesajului “Salutare lume!”, se scrie urmatoarea secventa:
<?php
class Salutare {
function ArataSalutare() {
echo 'Salutare lume!';
}
}
$a = new Salutare;
echo $a -> ArataSalutare();

?>
Creati o pagina cu numele clasa.php, introduceti codul de mai sus apoi testati in browser.

Observam faptul ca ne este afisat textul “Salutare lume!”, text ce l-am introdus in functia ArataSalutare()
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 () ).