Până la un subiect mai serios, care se află deja în scriere, vin cu o problemă, ce se adresează celor care se considera începători. Mi s-a întamplat sa dau această “problemă” unora de nivelul celui menţionat mai devreme, iar răspunsurile să  mă surprindă de fiecare dată.

Aşadar, dându-se un array (vector) cu 2 milioane de elemente, indexate corespunzător de la 0 la 1.999.999 cu valori de tip string, să zicem sub 1 KB ca dimensiune. 

Scrieţi o funcţie care să determine dacă vectorul în cauză este sau nu mulţime. Evident, se cere un timp de execuţie al funcţiei minim

Un vector este considerat mulţime dacă are toate valorile distincte

Vectorii, numiţi in engleză array, reprezintă cea mai avansată metodă de stocare a datelor în PHP. Sunt cele mai flexibile structuri de date: ele permint indecşi numerici sau alfanumerici, dar şi combinaţii; pot avea indecşi auto-incrementabili şi pot fi folosiţi ca stive, cozi, mulţimi, vectori uni, bi sau multi-dimenisonali şi pot stoca practic orice tip de dată. Este şi motivul pentru care în nucleul php există aproximativ 70 de funcţii definite pentru a uşura lucrul cu vectorii.

Aşadar aceşti vectori sunt o colecţie ordonată de obiecte numite generic elemente. Oricare dintre aceste elemente are o cheie unică în vector precum şi o valoare. Vectorii pot fi creaţi in 2 feluri, fie apeland functia array simplu, sau cu parametrii caz în care aceştia sunt atribuiţi vectorului.

[code lang="php"]
$arr = array();
$arr = array('a' => 1, 'b' => 2, 'c' => 3);
$arr = array(1 => 'a', 2 => 'b', 3 => 'c');
$arr = array(1, 2, 3);
[/code]

Primul apel va crea un vector gol, cel de-al doilea un vector cu indecşi alfanumerici, al 3-lea cu indecşi numerici, iar pentru cel din urmă am furnizat doar valorile elementelor, pentru care indecşii de vor atribui automat prin autoincrementare.

Afisarea vectorilor

Spre deosebire de tipurile de date scalare(int, string, float) care pot fi afişate folosind funcţia echo, pentru vectori aceasta prezintă cateva neajunsuri la afişarea datelor. De exemplu, în timpul unui debug poate fi esenţial să avem informaţii nu doar despre datele aflate în elemnte, dar şi tipul lor de date, pe oricare din nivelele existente. Pentru a preîntâmpina această problemă PHP furnizează 2 funcţii de afişare recursivă a informaţiilor dintr-un array:
[code lang="php"]
$array = array(1, 2, 'foo');
print_r($array);
var_dump($array);
[/code]
Acest cod va produce următorul text:
[code]
Array
(
[0] => 1
[1] => 2
[2] => foo
)
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
string(3) "foo"
}
[/code]

Observaţi cum, deşi ambele afişează elementele vectorilor, doar var_dump afişează şi tipul de dată al elementului respectiv. Mai mult, doar var_dump este capabil sa afişeze informaţiile despre mai mult de o variabiă, iar print_r are capacitatea de a trimite rezultatul către o variabilă prin specificarea celui de-al doilea parametru optional.