Verificarea unui element din matrice

sarcină
Este necesar să se determine dacă matricea conține o valoare specifică.

Soluția
Utilizați funcția in_array ():
dacă (in_array ($ array, $ value)) // în array $ array există un element cu valoare $ valoare






>
discuție
Utilizați funcția in_array () pentru a verifica dacă elementul matricei conține o valoare:

$ book_collection = array ("Emma", "Pride and Prejudice", "Northhanger Abbey");
$ book = 'Sens și Sensibilitate';
dacă (in_array ($ book_collection, $ book)) echo 'Own it.';
> else echo 'Aveți nevoie de ea.';
>

În mod implicit, funcția in_array () compară datele cu operatorul ==. Pentru a verifica cu operatorul strict de egalitate ===, treci funcția in_array () la adevărat ca al treilea parametru:

$ array = array (1, '2', 'trei');
in_array (0, $ array); // true!
in_array (0, $ array, true); // false
in_array (1, $ array); // true
in_array (1, $ array, true); // true
in_array (2, $ array); // true






in_array (2, $ array, true); // false

În primul test, funcția in_array (0, $ array) returnează adevărat, deoarece pentru a compara numărul 0 cu șirul de caractere, PHP returnează șirul de caractere trei la întreaga valoare.


Și deoarece șirul de caractere 3 nu este un șir numeric, cum ar fi 2, acesta se transformă la 0. Prin urmare, funcția in_array () presupune că valorile se potrivesc.

Prin urmare, atunci când comparăm numere cu date care pot conține șiruri de caractere, este mai sigur să folosiți o comparație strictă.

Dacă funcția in_array () este aplicată de mai multe ori în aceeași matrice, este mai bine să folosiți o matrice asociativă în care elementele matricei originale sunt chei. Când se utilizează funcția in_array (), timpul de căutare se modifică liniar,
iar în cazul unei matrice asociative, căutarea durează în același timp.

Dacă nu puteți crea un tablou asociativ în mod direct, și trebuie să-l obține prin transformarea unei matrice regulat cu taste întregi, folosiți un înlocuitor de chei și valori funcția array_flip array ():

$ book_collection = array ("Emma",
"Pride and Prejudice",
'Abație de la Northhanger');
// conversia de la matricea numerică la cea asociativă
$ cartea_collection = array_flip ($ book_collection);
$ book = 'Sens și Sensibilitate', dacă (isset ($ book_collection [$ book])) echo 'Own it.';
> else echo 'Aveți nevoie de ea.';
>

Rețineți că în procesul de obținere a unei matrice transformate, multe chei cu aceeași valoare sunt comprimate într-un singur element.







Articole similare

Trimiteți-le prietenilor: