»  Pagina principala  »  PHP si mysql »  Descrierea functiilor care pot fi utilizate la manipularea tablourilor

Descrierea functiilor care pot fi utilizate la manipularea tablourilor

Functia array_change_key_case
Aceasta functie realizeaza conversia tuturor literelor care apar in cadrul denumirilor cheilor elementelor unui tablou. Functia are doi parametri: un tablou asupra caruia se vor efectua modificarile si un intreg care arata daca se vor converti toate literele mari in litere mici sau invers. Pentru acest parametru pot fi utilizate constantele predefinite CASE_UPPER (conversie la litere mari) si CASE_LOWER (conversie la litere mici). Acest parametru poate lipsi, caz in care va avea valoarea implicita CASE_LOWER , deci va realiza conversia tuturor literelor mari in litere mici. Urmatorul document PHP ilustreaza modul in care poate fi utilizata aceasta functie.

Exemplu
Rezultat
<?PHP
$a = array("Pagina" => "Pagina" , "de" => "de" , "Php" => "Php");
echo "<TABLE cellpadding= 5>";
echo "<TR><TD><B>Tabloul initial:";
echo "</B><TD><TT>";
print_r($a);
echo "</TT><TR><TD><B>Tabloul dupa ";
echo "conversia implicita:";
echo "</B><TD><TT>";
$b = array_change_key_case($a);
print_r($b);
echo "</TT><TR><TD><B>Tabloul dupa ";
echo "conversia la litere mari:";
echo "</B><TD><TT>";
$b = array_change_key_case($a,CASE_UPPER);
print_r($b);
echo "</TT><TR><TD><B>Tabloul dupa ";
echo "conversia la litere mici:";
echo "</B><TD><TT>";
$b = array_change_key_case($a,CASE_LOWER);
print_r($b);
echo "</TT></TABLE>";
?>
Tabloul initial:Array ( [Pagina] => Pagina [de] => de [Php] => Php )
Tabloul dupa conversia implicita:Array ( [pagina] => Pagina [de] => de [php] => Php )
Tabloul dupa conversia la litere mari:Array ( [PAGINA] => Pagina [DE] => de [PHP] => Php )
Tabloul dupa conversia la litere mici:Array ( [pagina] => Pagina [de] => de [php] => Php )

Dupa cum se poate vedea, functia are efect doar asupra cheilor elementelor, valorile acestora ramanand nemodificate.

Functia array_chunks
Aceasta functie poate fi utilizata pentru a imparti un tablou in mai multe bucati (chunks). Ea are trei parametri, si anume: vectorul care urmeaza a fi impartit, dimensiunea unei bucati (numarul de elemente) si un indicator care arata daca se pastreaza sau nu cheile elementelor (acesta poate lipsi; in acest caz are valoarea implicita false, deci nu se vor pastra cheile elementelor). In cazul in care numarul elementelor tabloului initial nu este multiplu al dimensiunii unei bucati, atunci ultima bucata va fi mai "scurta" . Functia va returna un tablou al bucatilor (un tablou de tablouri).
Prezentam in continuare un exemplu care arata utilizarea acestei functii:

Exemplu
Rezultat
<?php
$vector = array ("a", "b", "c", "d", "e");
echo "<pre>";
print_r (array_chunk ($vector, 2));
echo "<p>";
print_r (array_chunk ($vector, 2, TRUE));
echo "</pre>";
?>
Array
(
[0] => Array
(
[0] => a
[1] => b
)

[1] => Array
(
[0] => c
[1] => d
)

[2] => Array
(
[0] => e
)

)

Array
(
[0] => Array
(
[0] => a
[1] => b
)

[1] => Array
(
[2] => c
[3] => d
)

[2] => Array
(
[4] => e
)

)

Functia array_count_values
Aceasta functie are ca parametru un tablou si returneaza un alt tablou ale carui elemente au chei date de valorile elementelor tabloului transmis ca parametru. Pentru fiecare valoare se va genera un singur element (chiar daca valoarea apare de mai multe ori), iar valoarea elementului respectiv este data de numarul aparitiilor. De exemplu, in urma executiei unei secvente de forma:
$tablou = array (1, "Pagina" , 1, "mea" , "Pagina" );
$rez = array_count_values ($tablou);

vectorul $rez va contine trei elemente, acestea vor avea cheile 1, Pagina si mea, iar valorile vor fi 2, 2, respectiv 1.

Functiile array_diff si array_diff_assoc
Uneori dorim sa eliminam dintr-un tablou anumite elemente; in acest scop pot fi utilizate functiile array_diff ( ) si array_diff_assoc ( ) .
Acestea au ca parametri mai multe tablouri si returneaza un tablou care contine toate elementele din tabloul reprezentat de primul parametru care nu apar in nici unul dintre tablourile corespunzatoare celui de-al doilea parametru. In cazul functiei array_diff ( ) sunt eliminate elemente din primul tablou daca in celelalte exista elemente cu aceeasi valoare. In cazul functiei array_diff_assoc ( ) sunt eliminate elemente din primul tablou daca in celelalte exista elemente cu aceeasi valoare si aceeasi cheie.

Functia array_fill
Aceasta functie poate fi utilizata pentru a completa cu o anumita valoare elementele unui tablou. Functia are trei parametri: primul reprezinta indicele la care incepe completarea, al doilea reprezinta numarul elementelor completate, iar cel de-al treilea indica valoarea cu care se completeaza elementele. De exemplu, in urma executarii instructiunii $a = array_fill (5, 6, 'Pagina mea! ' );, vom avea un tablou cu sase elemente (cheile acestora sunt 5, 6, 7, 8, 9 si 10), valorile tuturor acestora fiind Pagina mea! .

Functia array_filter
Aceasta functie realizeaza o filtrare a elementelor unui vector pe baza unei functii. Functia array_filter ( ) are ca parametri un tablou si identificatorul functiei care este utilizata pentru filtrare. Aceasta functie trebuie sa fie definita si va fi apelata pentru fiecare element al vectorului. In cazul in care functia returneaza valoarea true (eventual, in urma conversiei la tipul boolean), elementul este pastrat; in caz contrar, acesta este eliminat. Functia array_filter ( ) returneaza vectorul obtinut dupa eliminarea elementelor. In continuare este prezentat un exemplu in care se utilizeaza aceasta functie pentru a filtra elementele unui vector in functie de paritatea acestora.

Exemplu
Rezultat
<?php
function impar ($var) {
return $var % 2;
}
function par ($var) {
return 1 - $var %2;
}
$vector = array ("2", "4", "5", "7");
echo "<pre>";
print_r (array_filter ($vector, par));
echo "<p>";
print_r (array_filter ($vector, impar));
echo "</pre>";
?>
Array
(
[0] => 2
[1] => 4
)

Array
(
[2] => 5
[3] => 7
)

Functia array_flip
Aceasta functie are ca parametru un tablou si returneaza un alt tablou in care a fost realizata o interschimbare a cheilor elementelor cu valorile. Cu alte cuvinte, pentru fiecare element va fi creat un element a carui cheie va fi vaIoarea elementului in tabloul initial si a carui valoare va fi cheia elementului din tabloul initial. De exemplu, pentru tabloul definit prin
$tablou = array ("A" => "Pagina" , "B" => "de" , "C" => "php");
in urma executarii apelului $b = array_flip ($tablou) tabloul $b va avea forma array ("Pagina" => "A" , "de" => "B" , "php" => "C").
In cazul in care in vectorul transmis ca parametru exista mai multe elemente care au aceeasi valoare, datorita faptului ca elementele unui vector trebuie sa aiba chei distincte, vor fi eliminate toate aceste elemente, cu exceptia ultimului.

Functiile array_intersect si array_intersect_assoc
Aceste functii au un comportament similar functiilor array_diff ( ), respectiv array_diff_assoc ( ). Singura diferenta este data de faptul ca tabloul rezultat va contine toate elementele care se afla in fiecare dintre tablourile transmise ca parametri (pentru functia array_diff ( ) elementele trebuie sa aiba aceeasi valoare, in timp ce pentru functia array_diff_assoc ( ) ele trebuie sa aiba aceeasi cheie si aceeasi valoare).

Functia array_key_exists
Aceasta functie are doi parametri (o cheie si un vector) si verifica, asa cum sugereaza si numele, daca vectorul contine un element cu cheia respectiva. Functia returneaza o valoare logica, iar pentru parametrul care reprezinta cheia poate fi folosita orice valoare care poate fi cheie intr-un vector.

Functia array_keys si array_values
Aceste functii returneaza un vector care contine ca valori toate cheile (respectiv toate valorile) elementelor unui tablou transmis ca parametru. Pentru functia array_keys ( ), in cazul in care se foloseste un parametru suplimentar, vectorul rezultat va contine doar cheile elementelor care au valoarea egala cu cea indicata de acest parametru.

Functia array_map
Aceasta functie realizeaza o transformare a elementelor unui vector pe baza unei functii. Functia este transmisa ca parametru si este aplicata tuturor elementelor unui vector care este, si el, transmis ca parametru. Iata un exemplu:
function cub ($n) {
return $n * $n * $n;
}
$a = array (l, 2, 3, 4, 5);
$b = array_map ("cub", $a);

In urma executarii secventei, vectorul $b va avea cinci elemente ale caror valori vor fi 1, 8, 27, 64 si 125.
Exista posibilitatea de a transmite mai multe tablouri ca parametri. In acest caz, numarul argumentelor functiei utilizate trebuie sa fie egal cu numarul tablourilor transmise si se recomanda ca tablourile sa aiba acelasi numar de elemente. In caz contrar, tablourile mai "scurte" vor fi completate cu elemente nule. Un artificiu interesant permite crearea unor vectori de vectori folosind functia array_map ( ) . Pentru aceasta vom utiliza valoarea null pentru functia transmisa ca parametru. Vom prezenta in continuare un exemplu:
$a = array ( "unu" , "doi " , "trei" );
$b = array ( "one" , "two" , "three" );
$c = array ( "un" , "deux" , "trois" );
$d = array_map (null, $a, $b, $c);

Vectorul $d va avea urmatoarea structura:
Array
(
[0] => Array
(
[0] => unu
[1] => one
[2] => un
)
[1] => Array
(
[0] => doi
[2] => two
[3] => deux
)
[2] => Array
(
[0] => trei
[1] => three
[2] => trois
)
)


Functiile array_merge si array_merge_recursive
Aceste functii realizeaza o "interclasare" a doua sau mai multe tablouri prin adaugarea elementelor unui vector la sfarsitul tabloului anterior. In cazul in care exista elemente cu aceeasi cheie (reprezentata de un sir de caractere) in tabloul rezultat va aparea un singur element cu cheia respectiva, si anume primul intalnit in timpul interclasarii. In cazul in care cheia identica este reprezentata de un numar, in tabloul rezultat vor aparea ambele valori, dar valoarea corespunzatoare unei chei care apare deja in tablou va avea cheia reprezentata de cel mai mic numar mai mare decat cheia initiala care nu apare inca in tabloul rezultat.
In cazul in care tablourile contin elemente care sunt tablouri, atunci functia este array_merge_recursive ( ) si are ca efect si interclasarea acestor tablouri (care sunt elemente ale altor tablouri) si procedeul continua recursiv. In cele ce urmeaza vom prezenta un exemplu care ilustreaza diferentele dintre cele doua functii.

Exemplu
Rezultat
<?PHP
$v1 = array ("culoare" => array ( "preferata" => "rosu" ) , ( 5 )) ;
$v2 = array ( 10, "culoare" => array ( "preferata" => "verde" , "albastru"));
echo "<PRE>";
print_r (array_merge ($v1, $v2) ) ;
echo "<P>";
print_r (array_merge_recursive ($v1, $v2) ) ;
echo "</PRE>";
?>
Array
(
[culoare] => Array
(
[preferata] => verde
[0] => albastru
)

[0] => 5
[1] => 10
)

Array
(
[culoare] => Array
(
[preferata] => Array
(
[0] => rosu
[1] => verde
)

[0] => albastru
)

[0] => 5
[1] => 10
)

Functia array_multisort
Aceasta functie poate fi utilizata pentru a sorta mai multe tablouri sau un tablou multidimensional. Primul parametru al functiei trebuie sa fie un tablou, iar urmatoarele pot fi tablouri si indicatori de sortare. Fiecare indicator de sortare descrie caracteristici ale sortarii pentru cel mai apropiat tablou aflat inaintea indicatorului in lista de parametri. Exista doua categorii de indicatori de sortare:
- indicatori de ordine:
- SORT_ASC: sortare in ordine crescatoare;
- SORT_DESC: sortare in ordine descrescatoare;
- indicatori de tip:
- SORT_REGULAR: elementele sunt comparate fara a efectua conversii;
- SORT_NUMERIC: elementele sunt comparate dupa ce sunt convertite la valori numerice;
- SORT_STRING: elementele sunt comparate dupa ce sunt convertite in siruri de caractere.
Pentru un tablou nu pot fi specificati doi indicatori care fac parte din aceeasi categorie (de exemplu, nu este permisa specificarea pentru un tablou a indicatorilor SORT_NUMERIC si SORT_STRING). Nu este obligatorie specificarea ambelor tipuri de indicatori pentru fiecare tablou. In cazul in care indicatorii lipsesc, sunt utilizate valorile implicite SORT_ASC si SORT_REGULAR. Tablourile transmise ca parametri sunt considerate a fi coloane intr-o matrice care trebuie sortata pe linii. Primul tablou reprezinta criteriul de baza. Pentru valori egale in primul tablou se ia in considerare al doilea criteriu (reprezentat de al doilea tablou). Pentru valori egale in primele doua tablouri se ia in considerare al treilea criteriu si asa mai departe. Functia returneaza o valoare logica ce indica daca operatia de sortare sa incheiat cu succes. Sa consideram doi vectori definiti astfel:
$v1 = array ( "10", 100, 100, "a");
$v2 = array ( 1, 3, "2", 1);

In urma executiei apelului array_multisort ( $v1 , $v2); vectorul $v1 va contine elementele "10", "a", 100 si 100, in timp ce vectorul $v2 va contine elementele 1, 1, "2" si 3. Se observa ca elementele din al doilea vector corespunzatoare elementelor cu valori egale din primul vector (3 si "2" corespund celor doua elemente cu valoarea 100 din primul vector) au fost si ele sortate.
Vom prezenta acum un exemplu in care vom sorta un tablou bidimensional definit prin:
$v = array (array ("10", 100, 100, "a") ,
array (1,3,"2",11);

In urma unui apel de forma:
array_multisort ( $v [0], SORT_ASC, SORT_STRING, $v[l], SORT_NUMERIC, SORT_DESC); prima linie a tabloului va contine elementele "10", 100, 100 si "a " (au fost sortate crescator ca siruri de caractere), iar cea de-a doua va contine elementele 1, 3, "2" si 1 (pentru valori egale in prima linie, elementele de pe a doua au fost sortate descrescator ca valori numerice).

Functia array_pad

Aceasta functie poate fi utilizata pentru a completa un tablou cu o valoare data, astfel incat sa aiba o dimensiune specificata. Functia are trei parametri: tabloul care trebuie completat, dimensiunea pe care trebuie sa o aiba tabloul completat si valoarea cu care este completat tabloul. Tabloul va fi completat astfel incat dimensiunea sa sa fie egala cu valoarea absoluta a celui deal doilea parametru. In cazul in care valoarea acestui parametru este pozitiva, tabloul va fi completat la dreapta, iar daca aceasta este negativa, tabloul va fi completat la stanga. Daca valoarea absoluta a acestui parametru este mai mica sau egala cu dimensiunea tabloului transmis ca parametru, atunci nu sunt adaugate elemente. Functia returneaza tabloul obtinut dupa completare. Sa consideram vectorul definit prin:
$v = array (2 , 4 , 5 , 7) ;
In continuare vom prezenta cateva apeluri ale functiei si vectorii returnati de aceasta:
$r = array_pad ($v2, 6, -1) : (2, 4, 5, 7, -1, -1) ;
$r = array_pad ($v2, -7, 0) : (0, 0, 0, 2, 4, 5, 7) ;
$r = array_pad ($v2, 3, 5) : (2, 4, 5, 7);

[nu este adaugat nici un element]

Functiile array_pop si array_push
Aceste functii permit utilizarea tablourilor similar stivelor. Functia array_pop ( ) este utilizata pentru a elimina un element al tabloului (ultimul), iar functia array_push ( ) pentru a adauga in tablou unul sau mai multe elemente. Sa consideram ca vectorul $v este vid. In urma executiei apelului array_push ( $v , 1 , 2 , 3 ) acesta va contine elementele 1, 2 si 3. In acest moment, un apel de forma array_pop ( $v) va returna valoarea 3, iar vectorul $v va contine elementele 1 si 2 . In cazul in care vectorul transmis ca parametru este vid, functia array_pop ( ) returneaza valoarea null. Functia array_push ( ) va returna intotdeauna noua dimensiune a vectorului.

Functiile array_shift si array_unshift

Perechile functiilor array_pop ( ) si array_push ( ) sunt array_shift ( ) si array_unshift ( ). Acestea pot fi utilizate pentru a insera sau elimina elemente la inceputul unui tablou. Executarea acestor functii va duce la modificarea cheilor intregi astfel incat acestea sa inceapa de la 0.

Functia array_rand
Aceasta functie permite alegerea aleatoare a unui numar de elemente dintr-un vector. Functia are ca parametri un vector si o valoare numerica ce indica numarul elementelor care vor fi alese. Acest al doilea parametru poate lipsi, caz in care are valoarea implicita 1. In cazul in care se alege un singur element, functia va returna cheia acestuia. In caz contrar, functia va returna un tablou care va contine cheile elementelor alese. In continuare este un exemplu care ilustreaza modul de utilizare a acestei functii.

Exemplu
Rezultat
<?PHP
$v = array (2, 4, 5, 7) ;
$a = array_rand ($v) ;
echo "A fost ales elementul a carui cheie este <B>$a</B>. Valoarea acestui element este <B>$v[$a]</B>.<BR><BR>";
$a = array_rand ($v) ;
echo "A fost ales elementul a carui cheie este <B>$a</B>. Valoarea acestui element este <B>$v[$a]</B>.<BR><BR>";
$a = array_rand($v, 2) ;
echo "Au fost alese elementele ale caror chei sunt <B>$a[0]</B> si <B>$a[1]</B>. Valorile acestor elemente sunt <B>" .$v[$a[0] ] . "</B> si <B>" .$v[$a[1] ] . "</B>.<BR><BR>";
$a = array_rand ($v, 2) ;
echo "Au fost alese elementele ale caror chei sunt <B>$a[0]</B> si <B>$a[1]</B>. Valorile acestor elemente sunt <B>".$v[$a[0]]. "</B> si <B>" .$v[$a[1] ] . "</B>. ";
?>
A fost ales elementul a carui cheie este 2. Valoarea acestui element este 5.

A fost ales elementul a carui cheie este 0. Valoarea acestui element este 2.

Au fost alese elementele ale caror chei sunt 3 si 0. Valorile acestor elemente sunt 7 si 2.

Au fost alese elementele ale caror chei sunt 3 si 2. Valorile acestor elemente sunt 7 si 5.

Functia array_reduce
Aceasta functie aplica o alta functie transmisa ca parametru asupra elementelor unui tablou pana in momentul in care tabloul este redus la o singura valoare. Mai exact, functia transmisa ca parametru este apelata pentru primele doua elemente ale tabloului. Cele doua elemente sunt eliminate si in tablou este inserat pe prima pozitie rezultatul apelului functiei. Procedeul continua pana in momentul in care vectorul contine o singura valoare care este returnata. Exista si posibilitatea de a transmite o valoare initiala pentru efectuarea operatiilor. In acest caz functia transmisa ca parametru va fi apelata pentru valoarea initiala si primul element al tabloului. In cazul in care tabloul este vid, rezultatul apelului va fi aceasta valoare initiala. Sa consideram functiile definite astfel:
function S ($v, $w) {
return $v + $w;
}
function P ($v, $w) {
return $v + $w;
}

In urma executarii instructiunilor:
$a = array (2, 4, 5, 7);
$x = array ( );
$b = array_reduce ($a, "S") ;
$c = array_reduce ($a, "P" , 10) ;
$d = array_reduce ($x, "S", l) ;

valorile variabilelor $b, $c si $d vor fi 18 (2+4+5+7), 2800 (10*2*4*5*7), respectiv 1 (datorita faptului ca vectorul $x este vid).

Functia array_reverse
Aceasta functie inverseaza ordinea elementelor unui vector transmis ca parametru. In cazul in care este prezent un al doilea parametru si valoarea acestuia este TRUE (eventual dupa o conversie), atunci se pastreaza corespondenta dintre chei si valori. Functia returneaza tabloul obtinut dupa inversare. Sa consideram tabloul definit astfel:
$v = array("Pagina", "de", "programare", array ("martie", 2004));
In urma apelurilor $a = array_reverse ($v) si $b = array_reverse($v, TRUE) tablourile $a si $b vor avea forma prezentata mai jos:
Array
(
[0] => Array
(
[0] => martie
[1] => 2004
)
[1] => programare
[2] => de
[3] => Pagina
)
Array
(
[3] => Array
(
[0] => martie
[1] => 2004
)
[2] => programare
[1] => de
[0] => Pagina
)
Tabloul $a
Tabloul $b

Functia array_search
Aceasta functie verifica daca un vector contine un element care are o anumita valoare si, daca un astfel de element exista, returneaza cheia acestuia. In caz contrar functia returneaza valoarea FALSE. Primul parametru al functiei este valoarea cautata, iar al doilea este vectorul in care este cautata valoarea respectiva. Functia permite folosirea unui al treilea parametru care este optional. In cazul in care acesta exista si are valoarea TRUE, atunci in timpul cautarii se verifica si egalitatea tipurilor.

Functia array_slice
Aceasta functie poate fi utilizata pentru a prelua o portiune a unui tablou. Primul parametru reprezinta tabloul, al doilea reprezinta pozitia la care incepe portiunea preluata, iar al treilea indica numarul elementelor preluate. Aceasta functie ignora cheile elementelor si ia in considerare pozitiile "reale" ale elementelor in tablou. In cazul in care valoarea celui de-al doilea parametru este pozitiva, pozitia de inceput este determinata relativ fata de inceputul tabloului. Pentru o valoare negativa, pozitia este determinata relativ fata de sfarsitul tabloului. In cazul in care valoarea celui de-al treilea parametru este pozitiva, ea va indica numarul elementelor preluate. Daca ea este negativa, atunci valoarea sa absoluta va indica pozitia fata de sfarsitul vectorului la care se va "opri" preluarea elementelor. Acest parametru poate lipsi, caz in care sunt preluate toate elementele, pana la sfarsitul tabloului. Functia va returna un tablou care va contine elementele preluate.
Iin continuare este prezentat modul in care poate fi utilizata aceasta functie pentru a prelua portiuni ale unui vector.
Exemplu
Rezultat
<?PHP
function DisplayArray ($v) {
echo "<B>";
foreach ($v as $val)
echo " $val";
echo "</B><BR>";
}
$v = array ("a", "b", "c", "d", "e");
echo "<TT>Vectorul initial:";
DisplayArray ($v) ;
echo "array_slice (\$v,2) :";
DisplayArray (array_slice ($v,2)) ;
echo "array_slice (\$v,2, -1) : " ;
DisplayArray (array_slice ($v,2,-1) ) ;
echo "array_slice (\$v,-2,1):";
DisplayArray (array_slice ($v,-2,1)) ;
echo "array_slice (\$v,0,3):";
DisplayArray(array_slice ($v,0,3) ) ;
echo "</TT>";
?>
Vectorul initial: a b c d e
array_slice ($v,2) : c d e
array_slice ($v,2, -1) : c d
array_slice ($v,-2,1): d
array_slice ($v,0,3): a b c

Functia array_splice
Efectul acestei functii este similar efectului functiei array_slice ( ), diferenta constand in faptul ca portiunea preluata este eliminata din tablou si inlocuita cu elementele unui al patrulea parametru care reprezinta un vector.

Functia array_sum
Aceasta functie calculeaza suma elementelor unui tablou. In functie de tipul elementelor, rezultatul va fi un numar intreg sau un numar real. Pentru valorile nenumerice se incearca efectuarea unei conversii la numere intregi sau reale si in cazul in care valorile pot fi convertite (rezultatul conversiei nu este 0) ele sunt luate in considerare in momentul calcularii sumei. De exemplu, in urma executarii secventei:
$a = array (2, 4, 6, 8);
echo "suma (a) = " . array_sum ($a) . " \n" ;
$b = array ( "a" => 1.2 , "b" => 2.3 , "c" => 3.4 ) ;
echo "sum (b) = " . array_sum ($b) . "\n";

se va afisa:
sum (a) = 20
sum (b) = 6.9


Functia array_unique
Aceasta functie elimina dintr-un vector toate valorile care apar de doua sau mai multe ori si returneaza vectorul obtinut in urma eliminarii. Pentru a elimina elementele, functia le sorteaza mai intai considerandu-le siruri de caractere. Apoi, pentru fiecare valoare care apare de mai multe ori, va pastra prima cheie intalnita in sirul sortat.

Functii de sortare
Interpretorul PHP pune la dispozitie o multime de functii care pot fi utilizate pentru a sorta elementele unui tablou. Acestea sunt (in ordine alfabetica):
- arsort ( ) - sorteaza un tablou in ordine descrescatoare si pastreaza asocierile dintre indici;
- asort ( ) - sorteaza un tablou in ordine crescatoare si pastreaza asocierile dintre indici;
- krsort ( ) - sorteaza un tablou in ordine descrescatoare in functie de cheile elementelor acestuia;
- ksort ( ) - sorteaza un tablou in ordine crescatoare in functie de cheile elementelor acestuia;
- natcasesort ( ) - sorteaza un tablou folosind o " ordine naturala " fara a face distinctie intre literele mari si literele mici;
- natsort ( ) - sorteaza un tablou folosind o "ordine naturala " facand distinctie intre literele mari si literele mici;
- rsort ( ) - sorteaza un tablou in ordine descrescatoare in functie de valorile elementelor acestuia;
- sort ( ) - sorteaza un tablou in ordine crescatoare in functie de valorile elementelor acestuia;
- uasort ( ) - sorteaza un tablou folosind pentru comparari o functie indicata de utilizator si pastreaza asocierile dintre indici;
- uksort ( ) - sorteaza un tablou in functie de cheile acestuia folosind pentru comparari o functie indicata de utilizator;
- usort ( ) - sorteaza un tablou folosind pentru comparari o functie indicata de utilizator.
Toate functiile necesita un parametru care reprezinta vectorul care trebuie sortat.
Functiile arsort ( ) , asort ( ) , krsort ( ) , ksort ( ) , rsort ( ) si sort ( ) permit utilizarea unui al doilea parametru (optional) care este un indicator de tip. Valoarea implicita a acestuia este SORT_REGULAR. Al doilea parametru al functiilor uasort ( ) , uksort ( ) si usort ( ) reprezinta identificatorul functiei care va fi folosita pentru comparare.
Functiile natsort ( ) si natcasesort ( ) nu permit utilizarea unui alt parametru si stabilesc ordinea asa cum ar face o fiinta umana (ordine naturala). De exemplu, pentru sirurile de caractere IMG1 . GIF , IMG2 . GIF, IMG10 .GIF si IMG12 . GIF, un algoritm "clasic" (bazat pe ordinea lexicografica) ar stabili ordinea: IMG1. GIF, IMG10 .GIF, IMG12 .GIF si IMG2 .GIF, dar algoritmul care foloseste ordinea naturala nu ar efectua nici o modificare.

Functia compact
Aceasta functie are ca argumente un numar variabil de siruri de caractere sau tablouri. Ea creeaza un tablou in care va insera toate sirurile care reprezinta o variabiIa (aceste siruri vor fi chei, iar valorile elementelor corespunzatoare vor fi valorile variabilelor). In cazul tablourilor, vor fi luate in considerare toate elementele care sunt siruri de caractere, iar daca tablourile contin elemente care, la randul lor, sunt tablouri, atunci procedeul se aplica recursiv si asupra acestora.

Functiile count si sizeof
Aceaste functii returneaza numarul elementelor unui vector transmis ca parametru. Teoretic, parametrul poate sa nu fie un vector, dar in acest caz se va returna valoarea 1 (doar tablourile pot contine mai multe elemente). Nu exista nici o diferenta intre aceste functii.

Functii pentru elementul curent
Fiecarui vector ii este asociata o referinta care indica elementul curent. Exista mai multe functii care pot utiliza aceasta referinta. Acestea sunt (in ordine alfabetica):
- current ( ) - returneaza valoarea elementului curent al tabloului;
- each ( ) - returneaza cheia si valoarea elementului curent si deplaseaza referinta la elementul urmator; functia returneaza un tablou cu patru elemente: doua dintre ele au cheile 0 si key si contin cheia elementului; celelalte doua au cheile 1 si value si contin valoarea elementului;
- end ( ) - deplaseaza referinta la ultimul element al tabloului;
- key ( ) - returneaza cheia elementului curent al tabloului;
- next ( ) - deplaseaza referinta la urmatorul element al tabloului;
- pos ( ) - returneaza valoarea elementului curent al tabloului (are acelasi efect ca si functia current ( ) );
- prev ( ) - deplaseaza referinta la elementul anterior al tabloului;
- reset ( ) - deplaseaza referinta la primul element al tabloului.

Functia extract
Aceasta functie este utilizata pentru a crea variabile pe baza valorilor elementelor unui vector . Cheile elementelor vor deveni identificatori de variabile, iar valorile elementelor vor deveni valorile variabilelor respective. Functia verifica daca cheile reprezinta identificatori valizi ai variabilelor sau daca se incearca crearea unei variabile care exista deja. Aceste situatii sunt tratate in functie de valoarea unui al doilea parametru care reprezinta un indicator si este optional. Valorile posibile pentru acest parametru sunt urmatoarele:
- EXTR_OVERWRITE : daca variabila exista deja, valoarea curenta va fi suprascrisa;
- EXTR_OVERWRITE : daca variabila exista deja, valoarea curenta nu va fi modificata;
- EXTR_PREFIX_SAME: daca variabila exista deja, denumirea noii variabile va fi prefixata cu un prefix transmis ca al treilea parametru al functiei;
- EXTR_PREFIX_ALL : denumirile tuturor variabilelor vor fi prefixate;
- EXTR_PREFIX_INVALID : in cazul in care o cheie nu reprezinta un identificator de variabila valida, denumirea cheii va fi prefixata;
- EXTR_IF_EXISTS : nu sunt create variabile noi, ci sunt doar suprascrise valorile variabilelor care exista deja;
- EXTR_PREFIX_IF_EXISTS : in cazul in care cheia reprezinta denumirea unei variabile, se creeaza o noua variabila prefixata; daca nu exista o astfel de variabila, nu este creata o variabila noua;
- EXTR_REFS : variabilele create reprezinta referinte; asadar, prin intermediul lor pot fi modificate si elementele vectorului; acest indicator poate fi utilizat impreuna cu oricare dintre celelalte cu ajutorul unei disjunctii logice.
Cel de-al treilea parametru al functiei trebuie sa apara doar daca valoarea celui de-al doilea este unul din indicatorii ai carui identificator contine secventa PREFIX.
Al doilea parametru poate lipsi, caz in care are valoarea implicita EXTR_OVERWRITE.

Functia in_array
Aceasta functie este similara functiei array_search ( ) , singura diferenta fiind faptul ca, in cazul in care cautarea se incheie cu succes, nu este returnata cheia elementului gasit, ci valoarea TRUE.

Functia range
Aceasta functie returneaza un vector care contine toate valorile cuprinse intre doua limite date (st si dr). Primul element al vectorului va avea valoarea st, iar urmatoarele vor avea valorile st + 1, st + 2 etc. daca st < dr, respectiv st - 1, st - 2 etc. daca st > dr. Incepand cu versiunea PHP 4.4.0 va exista si posibilitatea de a crea siruri in care diferenta dintre doua elemente sa fie diferita de 1. In cele ce urmeaza este prezentat un document PHP care ilustreaza modul de utilizare a acestei functii.
Exemplu
Rezultat
<?PHP
function DisplayArray ($v) {
echo "<B>";
foreach ($v as $val)
echo " $val";
echo "</B><BR>";
}
echo "<TT>";
DisplayArray (range (1,10) ) ;
DisplayArray (range (10,1) ) ;
DisplayArray (range ( 'a' , 'k' ) ) ;
DisplayArray (range ( 'k' , 'a' ) ) ;
echo "</TT>";
?>
1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
a b c d e f g h i j k
k j i h g f e d c b a

Functia shuffle
Aceasta functie poate fi utilizata pentru a " amesteca " elementele unui tablou. Ea nu returneaza nici o valoare, dar modifica ordinea elementelor tabloului.
Exemplu
Rezultat
<?PHP
function DisplayArray ($v) {
echo "<B>";
foreach ($v as $val)
echo " $val";
echo "</B><BR>";
}
echo "<TT>Sirul initial:<BR>&nbsp;";
$a = range (l, 10) ;
DisplayArray ($a) ;
echo "Sirul amestecat:<BR>&nbsp;";
shuffle ($a) ;
DisplayArray ($a) ;
echo "</TT>";
?>
Sirul initial:
  0 1 2 3 4 5 6 7 8 9 10
Sirul amestecat:
  7 0 10 6 1 5 2 8 4 3 9




Link-ul autorului:
www.tutoriale.far-php.ro

Comentarii




Voteaza acest articol!
 



Trimite un comentariu!

Nume *
E-mail *
Comentariu *
  Vreau sa fiu anuntat de urmatoarele mesaje la acest articol

Security image

Fanache A. Remus

www.farsoft.far-php.ro - portofoliu
http://www.farsoft.far-php.ro

Cloud tag

tutorial, photoshop, html, css, javascript, flash, php, mysql, grafica 3D, tutorial, coduri, scripturi, generator de coduri, cursuri php