sâmbătă, 19 martie 2011

PHP Utilizarea functiilor (part12)

Utilizarea functiilor

Am folosit pana acum de mai multe ori termenul de functii. In cadrul acestei lectii veti învata mai multe despre utilizarea functiilor si despre modul de definire a propriilor dumneavoastra functii.
Functiile reprezinta secvente de cod care sunt apelate foarte frecvent in cadrul codului PHP. Folosirea intensiva a functiilor contribuie la o structurare mai buna a codului; ideea este ca o problema complexa sa o divizam in mai multe sub-probleme, fiecare astfel de subproblema sa fie executata in cadrul unei functii.
Pe de alta parte folosirea frecventa a functiilor duce la micsorarea cantitatii de cod scris; prin urmare vom avea un cod care se executa mai eficient.
1. Utilizarea unei functii
Pentru a folosi o functie, scrieti numele functiei, urmat de o pereche de paranteze. De exemplu, functia rand(), care genereaza un numar întreg aleator, poate fi apelata astfel:
rand()
Majoritatea functiilor preiau argumente, reprezentând valori, de intrare care influenteaza operarea si rezultatul functiei.
Pentru a specifica argumente, acestea se insereaza între paranteze; daca specificati mai mult de un argument, fiecare argument trebuie separat de vecinul sau printr-o virgula.
Argumentul unei functii poate fi o valoare literala, o variabila sau o expresie.
Unele functii PHP au argumente optionale, care pot fi specificate sau omise, în conformitate cu intentiile dumneavoastra. De exemplu, functia rand() are doua argumente optionale. Primul argument al functiei indica valoarea întreaga aleatoare cea mai mica pe care o va returna functia; al doilea argument indica valoarea cea mai mare. Daca omiteti ambele argumente, functia returneaza o valoare cuprinsa între 0 si cel mai mare rezultat posibil.
Puteti folosi valoarea returnata de o functie într-o expresie, astfel valoarea va fi accesibila în mod repetat fara a se invoca functia de mai multe ori
Iata un exemplu in care functia rand() returneaza o valoare aleatoare cuprinsa intre 1 si 500, atribuind valoarea unnei variabile "$nr" :
$nr = rand(1, 500);
echo $nr;
Când se produce o eroare în timpul executiei unei functii, PHP genereaza mesaje de eroare. Uneori, asemenea mesaje de eroare sunt nedorite. În acest caz, puteti suprima generarea mesajelor de eroare prin adaugarea in fata numelui functiei a caracterului @.
De exemplu,, pentru a suprima mesajele de eroare care pot aparea în timpul executiei functiei "f()", scriem aceasta functie dupa cum urmeaza:
y = @f(x);
Totusi, indicat este sa scrieti scripturi care sa nu genereze erori, ascunderea lor nu rezolva problema ce cauzeaza eroarea.

O functie utila, recomandata a fi folosita in script-uri este functia isset() si este cel mai des folosita cu "if()".
isset() preia ca argument de obicei o variabila si arata daca aceasta a fost sau nu setata.
De exemplu: isset($nr)
- Functia returneaza TRUE daca variabila "$nr" are setata o valoare (diferita de NULL), in caz contrar returneaza FALSE.
Aceasta functie este foarte utila in determinarea caror comenzi sa fie executate in functie daca o anumita variabila a fost setata sau nu. Previne aparitia unor erori care apar in cazuri de variabile nule si ajuta si la securitate.
De exemplu, sa presupunem ca avem un cod PHP care vrem sa fie executat numai daca prin adresa URL o fost transmisa o variabila "id", adica o adresa de forma http://www.domeniu.site/script.php?id=un_id, folosim functia isset() astfel:
<?php
if (isset($_GET['id'])) {
        // Se executa codul dorit
}
?>
- $_GET['id'] preia valoarea lui "id" din URL, iar functia isset() verifica daca aceasta valoare exista (daca in URL este "id=ceva"). Daca aceasta exista, returneaza TRUE iar functia "if", avand astfel valoarea TRUE, va executa codul dintre acoladele ei.
Functia isset() este utila si pentru situatii de verificarii a inexistentei unei variabile, prin adaugarea caracterului (!) in fata ei. Astfel daca o anumita variabila rezulta a nu fi setata, ii atribuim o valoare sau executam un anume cod special pt. asta.
Exemplu:
        if (!isset($_GET['id'] {
               die('Pagina apelata este inaccesibila.');
        }
2. Utilizarea fisierelor incluse
Functiile PHP va permit sa obtineri accesul la programe PHP scrise anterior, create într-un alt fisier extern.
Pentru aceasta puteti folosi functia require(), care are urmatoarea forma:
require("nume_fisier")
Când este încarcat un script PHP care contine o instructiune require, continutul fisierului specificat este inserat si executat în script, înlocuind instructiunea require.
De exemplu, sa presupunem ca realizam un site in PHP care este alcatuita din mai multe pagini, iar fiecare pagina contine in partea de sus acelasi cod HTML. In loc sa scriem de fiecare data, pentru fiecare pagina, acelasi cod HTML, il scriem o singura data intr-un fisier separat (de exemplu "antet.php") iar in paginile unde vrem sa fie inclus codul HTML folosim functia require()
Prin insertia instructiunii la începutul scriptului din fiecare pagina PHP, ca in exemplu urmator:
<?php
require("antet.php");
?>
- cu aceasta determinati programul PHP sa includa continutul fisierului "antet.php" ca si cum continutul respectiv ar face parte din acel script.
Acest procedeu poate simplifica întretinerea site-ului, deoarece informatiile standard pot fi tinute într-un singur fisier, ceea ce le face usor de localizat si de modificat.
O alta functie, similara instructiunii require este functia include(). Spre deosebire de functia require() care introduce datele din fisierul extern intocmai cum sunt scrise, functia include() este o instructiune executabila ce determina evaluarea scriptului PHP din fisierul extern si codul acestuia este executat ca si cum ar fi aparut în textul scriptului unde este inclus.
Sintaxa functiei include() este urmatoarea:
include("nume_fisier.php");
Functia corelata require_once() asigura faptul ca fisierul specificat este inclus o singura data într-un script dat. În cazul în care creati fisiere externe care si ele folosesc instructiunea require pentru a include continutul altor fisiere externe, puteti gasi instructiunea require_once utila.
3. Definirea unei functii
În afara de a utiliza functiile din biblioteca de functii a limbajului PHP, va puteti defini si folosi propriile functii.
Pentru a defini o functie, in PHP functiile incep intotdeauna cu declaratia: function, ca in exemplul urmator:
function nume_functie(nume_argument) {
        Aici se insereaza corpul functiei
}
Cuvântul cheie "function", "numele_functiei" si "nume_argument" alcatuiesc antetul functiei. Termenul de corp al functiei se refera la instructiunile incluse între acolade care urmeaza dupa antetul functiei. Instructiunile din corpul functiei sunt executate atunci când functia este apelata.
Numele functiilor nu prezinta sensibilitate la diferenta între majuscule si minuscule; ca atare, "f()" si "F()" reprezinta referiri la aceeasi functie.
Daca doriti sa definiti o functie care nu are argumente, puteti omite "nume_argument"; daca doriti sa definiti o functie cu mai multe argumente, puteti include argumente suplimentare dupa "nume_argument", fiecare argument fiind separat de vecinul sau printr-o virgula. Parantezele si numele argumentelor incluse între acestea poarta numele de lista cu argumente.
Ca exemplu, iata o functie care calculeaza aria unui dreptunghi:
<?php
function arie($lungime, $latime) {
        return $lungime * $latime;
}
?>
Lista cu argumente a functiei "arie()" include argumentele $latime si $inaltime. Corpul functiei este alcatuit dintr-o singura instructiune; cu toate acestea, corpul unei functii poate contine mai multe instructiuni.
Daca doriti ca o functie sa returneze o valoare, trebuie sa determinati functia sa execute o instructiune return care furnizeaza valoarea respectiva.
Instructiunea return determina sistarea executarii functiei; nu este necesar ca aceasta sa fie ultima instructiune fizica din corpul functiei. Daca definiti o functie care nu are nici o instructiune return (sau pentru date de iesire, precum "echo"), functia va returna valoarea speciala NULL.
4. Apelarea unei functii definite de utilizator
O functie definita de utilizator poate fi apelata ca orice functie.
De exemplu, iata o instructiune care apeleaza functia "arie()" din exemplul anterior:
<?php
function arie($lungime, $latime) {
        return $lungime * $latime;
}
$rezultat = arie(5,3);
echo "Aria exte : $rezultat";
?>
Valorile argumentelor 5 si 3 le înlocuiesc pe acelea ale argumentelor din corpul functiei, care se comporta ca si cum ar fi fost scrisa astfel:
return 5*3
Rezultatul afisat al acestui script va fi :
Aria exte : 15
5. Terminarea executiei unui script
O instructiune return determina sistarea executiei functiei care o contine. In cazul în care doriti sa sistati prelucrarea unui întreg script, puteti invoca functia exit().
Iata un exemplu simplu:
<?php
function stop() {
        exit();
}
echo "<br />Unu...";
echo "<br />Doi...";
stop();
echo "<br />Trei...";
?>
Dupa executie, scriptul afiseaza:
Unu...
Doi...
Rezultatul acestui script include cuvintele "Unu" si "Doi", dar nu si cuvântul "Trei". Prin apelarea functiei "stop()" se executa corpul functiei respective; la invocarea functiei, exit(), executia scriptului se încheie.
6. Functii recursive
Este posibil ca o functie din PHP sa se auto-apeleze. O functie care procedeaza astfel se numeste "functie recursiva". Totusi, daca nu aveti experienta de programare, este recomandat sa nu scrieti functii recursive. Cu toate acestea, puteti scrie accidental sau intalni o asemenea functie, deci este util sa stiti unele notiuni referitoare la aceasta.
Studiati scriptul urmator care defineste si invoca o functie recursiva simpla:
<?php
function recursor($nr) {
        $nr++;
        if ($nr<8) {
                return recursor($nr);
        }

        return $nr;
}

$x = recursor(3);
echo $x;
?>
- Daca rulati acest script, rezultatul afisat va fi 8.
- Variabila "$x" primeste ca valoare functia "recursor()" careia ii transmite ca argument numarul 3.
- Functia "recursor()" incrementeaza cu o unitate valoarea argumentului, prin "$nr++;" care devine 4, apoi conditia "if ($nr<8)" verifica daca aceasta variabila din functie e mai mica decat 8, in caz afirmativ se executa comanda "return recursor($nr);" care sisteaza executia altui cod din functie si auto-apeleaza iar functia (cu noua valoare a lui "$nr" ca argument) care iar incrementeaza valoarea lui "$nr" si verifica din nou conditia care iar autoapeleaza functia, ... si tot asa pana cand "$nr" va avea valoarea 8 si la verificare conditiei "if" aceasta returneaza FALSE si se trece mai departe la executia comenzii "return $nr;" care va returna 8 ca valoare a variabilei "$x".
Functia "echo" va afisa valoarea lui "$x", adica 8.
7. Definirea argumentelor prestabilite
PHP va permite sa definiti functii cu argumente prestabilite. Daca apelati o functie care are un argument prestabilit, dar nu furnizati nici o valoare pentru argumentul respectiv, argumentul ia o valoare prestabilita specificata la inceput.
Iata un exemplu simplu, studiati-l cu atentie:
<?php
function impozit_vanzari($cantitate, $rata = 0.0725) {
        return $cantitate * $rata;
}

$cumparaturi = 123.45;
echo "<br />cumparaturi = $cumparaturi";
$impozit1 = impozit_vanzari($cumparaturi, 0.09);
echo "<br />impozit1 = $impozit1";

$cumparaturi = 123.45;
echo "<br /><br />cumparaturi = $cumparaturi";
$impozit2 = impozit_vanzari($cumparaturi);
echo "<br />impozit2 = $impozit2";
?>
Rezultatu afisat va fi:
cumparaturi = 123.45
impozit1 = 11.1105

cumparaturi = 123.45
impozit2 = 8.950125
- Functia impozit_vanzari preia doua argumente: un argument obligatoriu, denumit $cantitate, si un argument prestabilit, denumit $rata.
Daca apelati functia si furnizati un singur argument, valoarea argumentului respectiv se considera ca fiind valoarea argumentului $cantitate, iar valoarea 0.0725 se foloseste ca valoare a argumentului $rata. Astfel, la prima invocare a functiei, pentru "impozit1", $rata are valoarea 0.09, specificata drept al doilea argument al functiei. Cu toate acestea, la a doua invocare a functiei, pentru "impozit2", $rata are valoarea 0.0725 deoarece este specificata valoarea unui singur argument, si astfel "$rata" a preluat valoarea prestabilita initial.

PHP Utilizarea matricelor (array) - 2 (part11)


Utilizare Array (matrice) - (2)

Parcurgerea unui Array asociativ
Lucrul cu functii lista
Sortarea matricelor
Transformarea matricelor in siruri si a sirurilor in matrice (array)
1. Parcurgerea unui Array asociativ
In lectia precedenta a fost prezentata modalitatea de citire a elementelor din matrice secventiala - adica matrice ale caror chei sunt numere intregi consecutive.
Tablourile de date pot avea si elemente ale caror chei pot fi numere aleatoare sau chiar cuvinte, aceste matrici se numesc "matrici asociative" (non-secventiale).

Pentru citirea datelor dintr-un Array asociativ se poate folosi instructiunea foreach care simplifica parcurgerile de acest gen.
Instructiunea foreach are urmatoarea forma generala:
foreach (tablou as $cheie => $valoare) {corp}
- Instructiunea parcurge în mod iterativ (element cu element) tabloul denumit "tablou", stabilind valori adecvate pentru valorile variabilelor "$cheie" si "$valoare" aferente fiecarui element al tabloului.
Iata un exemplu simplu:
<?php
$limbaje = array(10=>"Perl", 20=>"PHP", 21=>"Python");
foreach ($limbaje as $index => $limbaj) {     // parcurge iterativ tabloul
        echo "<br />$index =>$limbaj";
}
?>
- Remarcati ca instructiunea echo face pur si simplu referire la valorile variabilelor $index si $limbaj, carora li se atribuie în mod automat valorile cheii, respectiv elementului curent.
10 =>Perl
20 =>PHP
21 =>Python

Cateodata este nevoie sa parcurgem datele unui tablou multi-dimensional.
Pentru a parcurge matricea, folositi instructiuni foreach imbricate:
Pentru a invata modul de parcurgere a unui Array multi-dimensional, sa studiem urmatorul exemplu:
<?php
$date = array("PHP"=>array("simplu", "popular"), "Python"=>array("simplu", "nepopular"), "Pearl"=>array("dificil", "popular"));
foreach ($date as $limbaj => $valoare) {
        foreach($valoare as $cheie =>$caracteristica) {
            echo "<br />$limbaj : $caracteristica";
        }
}
?>
- Instructiunea foreach exterioara obtine cate un Array asociat cu fiecare limbaj; a doua instructiune foreach, interioara, parcurge fiecare Array obtinut de prima instructiune foreach.
Iata rezultatul:
PHP : simplu
PHP : popular
Python : simplu
Python : nepopular
Pearl : dificil
Pearl : popular
2. Lucrul cu functii lista
În afara de modalitatile de parcurgere a matricelor, PHP ofera numeroase functii care va permit traversarea tablourilor, deplasându-va înainte sau înapoi prin elementele acestuia.
Prima dintre aceste functii este current(), care returneaza valoarea curenta a tabloului. Functia current() foloseste un pointer intern de tablou, pe care PHP îl creeaza pentru fiecare tablou. (Când creati un tablou, pointerul intern de tablou este configurat astfel încât sa faca referire la primul element al tabloului).
Functiile next() si prev() modifica pointerul intern al tabloului si se pot folosi alaturi de functia current() pentru a parcurge un tablou.
Functia next(), asa cum îi arata si numele, modifica pointerul intern al tabloului astfel încât acesta sa faca referire la urmatorul element, în timp ce functia prev() modifica pointerul intern al tabloului astfel încât acesta sa faca referire la elementul anterior.
Iata un exemplu care prezinta modul de operare al functiilor mentionate:
<?php
$limbaje = array(10=>"Perl", 20=>"PHP", 21=>"Python");
$curent = current($limbaje);
      echo "<br />functia current() a returnat $curent";
$urmator = next($limbaje);
      echo "<br />functia next() a returnat $urmator";
$urmator = next($limbaje);
      echo "<br />functia next() a returnat $urmator";
$anterior = prev($limbaje);
      echo "<br />functia prev() a returnat $anterior";
?>
Iata datele de iesire ale exemplului:
functia current() a returnat Perl
functia next() a returnat PHP
functia next() a returnat Python
functia prev() a returnat PHP
Observati modul în care sunt utilizate functiile prev() si next() pentru deplasarea înapoi, respectiv înainte, în interiorul tabloului.
3. Functia key()
Functia key() este corelata cu functia current(). Daca functia current() returneaza valoarea asociata elementului curent, functia key() returneaza cheia asociata elementului curent.
Iata un exemplu care ilustreaza modul de operare al acestei functii:
<?php
$limbaje = array(10=>"Perl", 20=>"PHP", 21=>"Python");
$curent = current($limbaje);
$cheie = key($limbaje);

echo "<br />functia current() a returnat $curent";
echo "<br />functia key() a returnat $cheie";
?>
Iata datele de iesire ale exemplului:

functia key() a returnat 10
4. Functia each()
O alta functie utila în parcurgerea tablourilor este each().
Functia each() returneaza perechea "cheie-valoare" care se afla la pozitia curenta din tabloul specificat. Perechea "cheie-valoare" este returnata sub forma unui Array asociativ cu patru elemente, dupa cum urmeaza:

Cheie
Valoare
0
- Componenta cheie a perechii cheie-valoare curenta
1
- Componenta valoare a perechii cheie-valoare curenta
key
- Componenta cheie a perechii cheie-valoare curenta
value
- Componenta valoare a perechii cheie-valoare curenta

- Observati ca puteti folosi valoarea cheie "0" sau "key" pentru a obtine accesul la componenta cheie a perechii "cheie-valoare"; similar, puteti folosi valoarea cheie "1" sau "value" pentru a obtine accesul la componenta valoare a perechii "cheie-valoare".
Pentru a intelege mai bine cum se foloseste functia each(), studiati exemplul urmator:
<?php
$limbaje = array(10=>"Perl", 20=>"PHP", 21=>"Python");
$fiecare = each($limbaje);
$zero = $fiecare[0];
$unu = $fiecare[1];
$cheie = $fiecare['key’];
$valoare = $fiecare['value’];

echo "<br />zero=$zero";
echo "<br />unu=$unu";
echo "<br />cheie=$cheie";
echo "<br />valoare=$valoare";
?>
Iata datele de iesire ale exemplului:
zero=10
unu=Perl
cheie=10
valoare=Perl
5. Functia list()
O alta functie utila în lucrul cu tablouri este functia list(), aceasta va permite sa atribuiti valori la numeroase variabile în cadrul unei instructiuni.
Functia list() este deseori folosita cu functia each(), deoarece functia list() faciliteaza accesul separat la cheia si la valoarea returnate de functia each().
Forma generala de utilizare a functiei list() este urmatoarea:
                list($var1, $var2, ..…, $varn) = valoare_tablou;
Fiecare dintre variabilele specificate, de la $var1 la $varn, primeste o valoare din tabloul "valoare_tablou".
Într-un fel, functia list() este opusa functiei array(), deoarece functia list() împarte un tablou într-o serie de valori scalare, în timp ce functia array() construieste un tablou dintr-o serie de valori scalare.
Iata un exemplu care ilustreaza modul de utilizare a functiei list():
<?php
$limbaje = array(10=>"Perl", 20=>"PHP", 21=>"Python");
list($cheie, $valoare) = each($limbaje);
echo "<br />cheie = $cheie, valoare = $valoare";
$urmator = next($limbaje);
echo "<br />urmator = $urmator";
?>
Iata datele de iesire ale exemplului:
cheie = 10, valoare = Perl
urmator = Python
PHP contine peste 40 de functii pentru lucrul cu tablourile. De exemplu, functia array_search() faciliteaza cautarea într-un tablou.
Pentru informatii despre aceasta functie si despre alte functii utilizate în lucrul cu tablouri, vizitati site-ul
www.php.net.
6. Sortarea tablourilor
Sortarea reprezinta o alta operatie frecvent aplicata tablourilor. PHP furnizeaza o suita de functii care faciliteaza sortarea unui tablou.
De exemplu, un tablou poate fi creat dupa cum urmeaza:
                $limbaje = array(10=>"Perl", 20=>"PHP", 21=>"Python");
Apoi, doriti sa sortati tabloul în ordine alfabetica, in functie de numele limbajului de programare.
Pentru aceasta, pur si simplu invocati functia sort():
                sort($limbaje);
Dupa sortare, continutul tabloului apare in ordinea cum se poate vedea mai jos:
0 => PHP
1 => Perl
2 => Python
Observati ca secventa de sortare sau secventa de aranjare (cum este numita uneori) este sensibila la diferenta între majuscule si minuscule. Deoarece litera "H" mare este sortata inaintea literei "e" mic, PHP apare înainte de Python în datele de iesire sortate.
Iata un exemplu practic de folosire a functiei sort() :
<?php
$arr = array(0=>'Popescu', 1=>'Avram', 5=>'Cristian',3=>'Dan');
sort($arr);
foreach($arr as $key=>$nume) {
        echo "<br />Cheie=$key Valoare=$nume";
}
?>
Rezultatul afisat este urmatorul :
Cheie=0 Valoare=Avram
Cheie=1 Valoare=Cristian
Cheie=2 Valoare=Dan
Cheie=3 Valoare=Popescu
- Se observa ca instructiunea sort($arr) sorteaza matricea $arr dupa campul valoare (oridine alfabetica).
- Observam de asemenea ca valorile campului cheie a fost alterata, fara sa conteze valoarea sau ordinea cheilor.

Daca dorim sa sortam in ordine inversa alfabetic, folosim functia rsort()
Iata acelasi exemplu, da cu functia rsort()
<?php
$arr = array(0=>'Popescu', 1=>'Avram', 5=>'Cristian',3=>'Dan');
rsort($arr);
foreach($arr as $key=>$nume) {
        echo "<br />Cheie=$key Valoare=$nume";
}
?>
Acum rezultatul afisat este urmatorul :
Cheie=0 Valoare=Popescu
Cheie=1 Valoare=Dan
Cheie=2 Valoare=Cristian
Cheie=3 Valoare=Avram
- Se observa ca si in acest caz au fost alterate valorile initiale ale cheilor.

Pentru a sorta matricea "$arr" pastrand corelarea initiala dintre valori si cheile corespunzatoare se folosesc functiile asort(), respectiv arsort(). Incercati-le singuri.

In afara de acestea mai sunt si alte functii utile pentru sortarea tablourilor.
Iata un tabel care prezinta functiile folositoare pentru sortarea unui tablou, impreuna cu rezultatul aplicarii fiecarei functii.
Vom lua ca model pentru exemplificare urmatoarea matrice:
$limbaje = array(10=>"Perl", 20=>"PHP", 21=>"Python");

Functie
Operatia efectuata
Rezultat
sort()
- Sortarea unui tablou în functie de valoare, in ordine alfabetica, fara sa se tina cont de cheile initiale
  0 => PHP
  1 => Perl
  2 => Python
asort()
- Sortarea unui tablou în functie de valoare, in ordine alfabetica, pastrand corelarea initiala dintre valori si cheile corespunzatoare
  20 => PHP
  10 => Perl
  21 => Python
rsort
- Sortarea unui tablou în functie de valoare, in ordine invers alfabetica, fara sa se tina cont de cheile initiale
  0 => Python
  1 => Perl
  2 => PHP
arsort
- Sortarea unui tablou în functie de valoare, in ordine invers alfabetica, pastrand corelarea initiala dintre valori si cheile corespunzatoare
  21 => Python
  10 => Perl
  20 => PHP
ksort
- Sortarea unui tablou în functie de cheie, in ordine ascendenta
  10 => Perl
  20 => PHP
  21 => Python
krsort
- Sortarea unui tablou în functie de cheie, in ordine descendenta
  21 => Python
  20 => PHP
  10 => Perl

O modalitate de a executa o cautare fara sensibilitate la diferenta între majuscule si minuscule ar fi utilizarea functiei natcasesort(), care sorteaza un tablou folosind o ordine care nu este sensibila la diferenta între majuscule si minuscule.
O alta modalitate consta în a utiliza functia usort() sau una dintre functiile sale conexe, în speta uksort() si uasort().
Functia usort() sorteaza valorile din tablou si returneaza un tablou secvential; functia uksort() sorteaza cheile tabloului, iar functia uasort() sorteaza un tablou asociativ.
De exemplu, urmatoarele instructiuni creeaza un tablou si îl sorteaza într-o maniera insensibila la diferenta între majuscule si minuscule:
$limbaje = array("Perl", "PHP", "Python");
usort($limbaje, "strcmpcase");
foreach($limbaje as $key=>$nume) {
      echo "<br />$key => $nume";
}
Functia strcmpcase() este o functie din biblioteca PHP care compara doua siruri fara a tine cont de majuscule sau minuscule. Functia returneaza o valoare negativa daca primul sir este mai mic decât al doilea, zero daca sirurile sunt identice, respectiv o valoare pozitiva daca primul sir este mai mare decât al doilea.
Rezultatul va fi :
0 => Perl
1 => PHP
2 => Python
Pentru mai multe informatii despre functia usort() si despre functiile sale conexe, examinati site-ul www.php.net
Transformarea sirurilor in matrice si invers
PHP pune la dispozitia utilizatorilor functii pentru conversia intre siruri si matrice. Acestea pot fi utile in situatii in care valoarea matricelor trebuie memorate in baza de date.
Pentru a transforma un sir intr-o matrice folosim functia explode(). Sintaxa aceste functii este:
$matrice = explode(" ", $sir);
- In loc de spatiul dintre (" "), ca indiciu de separare, poate fi scris orice caracter; dupa cum se doreste impartirea sirului.
Iata un exemplu:
<?php
$sir = "Popescu Avram Cristian Dan";
$matrice = explode(" ",$sir);
foreach($matrice as $key=>$nume) {
      echo "<br />Cheie = $key Valoare = $nume";
}
?>
Acest cod va produce urmatorul rezultat:
Cheie = 0 Valoare = Popescu
Cheie = 1 Valoare = Avram
Cheie = 2 Valoare = Cristian
Cheie = 3 Valoare = Dan

Pentru a transforma o matrice intr-un sir, folosim functia implode(). Sintaxa aceste functii este:
$sir = implode(" ", $matrice);
- In loc de spatiul dintre (" "), ca semn de separare a elementelor in sir, poate fi scris orice caracter; dupa cum se doreste crearea sirului.
In continuare, pentru exemplificare, folosind exemplul de mai sus, sortam matricea "$matrice" alfabetic si apoi transferam matricea intr-un alt sir , de aceasta data sortat (Observati folosirea caracterelor ( \" ) in expresia echo, pentru ca la iesire rezultatul sa contina ghilimele):
<?php
$matrice = array("Popescu", "Avram", "Cristian", "Dan");
sort($matrice);
$sir = implode(" - ",$matrice);
echo "<br />Sirul rezultat : \"$sir\"";
?>
Acest cod va produce urmatorul rezultat:
Sirul rezultat : "Avram - Cristian - Dan - Popescu"