Contacte

Cum să verificați prezența unei valori în matricea PHP. PHP: Array_Search - Căutare rapidă de către matricea PHP Căutați o matrice după valoare

Căutarea valorilor din matrice este necesară în aproape fiecare aplicație PHP, un script pentru datele care lucrează cu date, pentru care există multe moduri și funcții speciale. În funcție de sarcină și de tipul de căutare, ar trebui să utilizați anumite instrumente, având în vedere caracteristicile lor, viteza de execuție și comoditate în utilizare. Apoi, vom fi familiarizați cu funcții PHP de căutare a elementelor din matrice, posibile modele și metode, precum și a afla ce metodă este cea mai rapidă.

Funcții pentru căutarea în matrice:
array_search. - Folosit pentru a căuta valori în matrice. Dacă este bine, acesta returnează cheia valorii dorite dacă nu se găsește nimic - returnează fals. Înainte de versiunea PHP 4.2.0, Array_Search (), cu defecțiune, nulă returnată, nu falsă.

Mixed Array_Search Sintaxă (acul mixt, haystack array [, bool stricte]).

foreach (array_expression ca valoare $)
Afirmație
Foreach (array_expression ca key $ \u003d\u003e valoare $)
Afirmație

Un exemplu de utilizare a funcției FEACAH pentru a căuta un element de matrice, returnează adevărat atunci când reușesc

Sintaxă de construcție
În timp ce (expr)
Afirmație

Returnează cazul unui element de matrice atunci când este de succes

Din tabelul de mai sus se poate observa că funcția array_search., Afișează cel mai bun rezultat ca atunci când caută o matrice mici și mari. În același timp, timpul de căutare pentru setul de cicluri crește semnificativ în funcție de dimensiunea matricei.

(PHP 4\u003e \u003d 4,0,5, PHP 5)

array_search - caută această valoare în matrice și returnează cheia corespunzătoare dacă este noroc

Descriere

amestecat. array_search. (Ac mixt, haystack array [, bool stricte])

Căutând în haystack valoarea acului și returnează cheia, dacă este așa de prezentă în matrice, Fals in caz contrar.

Cometariu: Dacă acul este un șir, se face o comparație dependentă de registru.

Cometariu: La PHP 4.2.0, array_search () Dacă este posibil, returnat NUL in schimb Fals .

Dacă treceți valoarea Adevărat. ca parametru opțional al treilea parametru, funcție array_search () Verificați, de asemenea, acul de tip din matricea de fân.

Dacă acul este prezent în haystack de mai multe ori, prima cheie găsită va fi returnată. Pentru a returna cheile pentru toate valorile găsite, utilizați funcția array_keys () Cu un parametru opțional de căutare_value.


Exemplu 1. Exemplu de utilizare array_search ()

$ Array \u003d matrice (0 \u003d\u003e "albastru", 1 \u003d\u003e "roșu", 2 \u003d\u003e 0x000000, 3 \u003d\u003e "verde", 4 \u003d\u003e "roșu"); $ key \u003d array_search ("roșu", $ matrice ); // $ key \u003d 1;
$ Key \u003d array_search ("verde", $ matrice); // key $ \u003d 2; (0x000000 \u003d\u003d 0 \u003d\u003d "verde")
$ Key \u003d array_search ("verde", $ matrice, adevărat); // $ key \u003d 3;
?>
Atenţie

Această caracteristică se poate întoarce ca o valoare logică. Fals și nu se referă la valoarea tip logic care este dată Fals , de exemplu, 0 sau "". Pentru mai multe informații, consultați secțiunea de tip Boulev. Utilizați instrucțiunea \u003d\u003d\u003d pentru a verifica valoarea returnată de această funcție.

Una dintre operațiunile principale atunci când lucrați cu matrice este o căutare a unei valori specifice. În acest scop, caracteristica PHP Array_Search (). Este capabil să proceseze atât colecții unidimensionale, cât și asociative, returnând cheia valorii dorite dacă se găsește în matrice.

Sintaxă

Descrierea formalizată a funcției Array_Search () în PHP este după cum urmează:

Mixed Array_Search (valoare mixtă, colecție de matrice [, bool stricte])

Parametrii de intrare:

  • $ Colecție - o matrice în care va fi făcută căutarea;
  • valoarea este valoarea dorită de orice tip;
  • strict este un pavilion logic opțional care stabilește un mecanism strict de comparație bazat pe tipuri.

Mecanism de lucru

Funcția PHP Array_Search () compară alternativ valoarea cu toate valorile din matricea de colectare. În mod implicit, comparația se efectuează fără a lua în considerare tipurile de operanzi. Această setare poate fi modificată prin setarea valorii adevărate pentru steag. Comparația sefurilor se efectuează cu privire la registru.

Când este detectată coincidența, cheia corespunzătoare elementului găsit este returnată și funcționarea funcției se oprește. Prin urmare, este imposibil să se detecteze înregistrarea multiplă a valorii dorite într-o matrice.

Dacă nu ați găsit nici un meci, funcția va returna valoarea booleană falsă.

Verificați rezultatul returnat ar trebui să utilizeze un operator strict de egalitate (\u003d\u003d\u003d). Acest lucru este important, deoarece funcția poate returna o valoare care este dată falsă, de exemplu, 0 sau un șir gol.

Exemple de utilizare

Exemplul 1. Când transmiteți o matrice multidimensională la funcția PHP Array_Search (), rezultatul lucrării este cheia elementului dorit.

"Winter", "sezon2" \u003d\u003e "primăvară", "sezon3" \u003d\u003e "Vara", "sezon4" \u003d\u003e "toamnă"); $ rezultat1 \u003d array_search ("Winter", $); $ Rezultat2 \u003d array_search ("vara", $); $ rezultat3 \u003d array_search ("aprilie", $ matrice); ?\u003e.

În acest exemplu, variabila de rezultat1 $ va primi "sezonul1", $ rezultatul va fi "sezon3", iar $ rezultatul3 va fi atribuit o valoare booleană falsă, deoarece șirul "aprilie" nu apare în matricea sursă.

Exemplul 2. Funcția PHP Array_Search () poate procesa, de asemenea, o matrice unidimensională, numărarea cheilor sale în ordinea indismelor numerice.

Variabila de rezultate $ va fi atribuită la 1, în conformitate cu indicele Element Hunter din matricea de matrice $.

Exemplul 3. Eroare posibilă atunci când analizați rezultatul.

"Washington", 1 \u003d\u003e "Adams", 2 \u003d\u003e "Jefferson", 3 \u003d\u003e "Madison", 4 \u003d\u003e "Monroe"); $ rezultat \u003d array_search ("Washington", $ președinți); Dacă (Rezultatul $) (Echo "G. Washington nu a fost primul președinte al SUA";)?\u003e

Deci, fără a verifica rezultatul rezultat cu egalitate strictă, puteți obține un mesaj neașteptat pe care George Washington nu a fost primul președinte al Statelor Unite.

Exemplul 4. Numai cheia primei coincidență detectată este returnată.

În ciuda faptului că valoarea dorită se găsește în matrice de trei ori, funcția va returna doar primul rezultat - 0. Pentru a căuta mai multe meciuri, se recomandă utilizarea funcției PHP Array_Keys ().

Programarea este sintaxa și semantica. Primul este determinat de regulile limbii, al doilea - experiența dezvoltatorului. În ceea ce privește matricele, dezvoltatorul poate obiecta la sintaxa semantică. Acesta nu este un obiect, dar nu mai este o matrice într-o înțelegere tradițională. PHP face posibilă crearea unor matrice din diferite tipuri diferite, inclusiv ele însele. Un element al matricei poate fi o funcție, adică capacitatea de a încărca matricea cu un algoritm real, sens real.

Sintaxa este stabilă, dar se schimbă de la versiune la versiune și nu poate fi întotdeauna compatibil chiar și din partea de jos în sus. Portabilitatea programelor este bine uitată de realizarea secolului trecut. Semetica se dezvoltă și poate fi aplicată întotdeauna nu numai în nici o versiune a oricărei limbi; A fost o tradiție de a folosi structuri de sintaxă pentru a exprima că regulile limbii nu au fost chiar furnizate. Pe exemplul de matrice, acest lucru poate fi înțeles ușor.

Construcția de arme

O matrice în PHP are o sintaxă și o funcționalitate convenabilă. Aceasta poate fi descrisă în avans, dar de multe ori este convenabil să creați o serie în zbor după cum este necesar.

public $ Anne \u003d Array (); // matricea este descrisă și nu conține nimic

public $ Afact \u003d Array ("Avocado", "Peach", "Cherry"); // În această array trei elemente

Crearea unei matrice în procesul de verificare a oricărei condiții:

$ csrcline \u003d "rând de date analizate";

pentru ($ i \u003d 0; $ i<13; $i++) {

dacă (CheckFunc ($ csrcline, $ Cuserline) (

$ Aresult \u003d "da"; // Adăugați la matricea PHP

$ Aresult \u003d "nu";

Ca urmare a executării acestui exemplu, va fi creată o serie de 13 elemente, ale cărei valori vor fi doar șirurile "da" sau "nu". Elementele vor primi indexuri de la 0 la 12. Același efect poate fi obținut, după ce a scris o matrice PHP "viitoare" în șir:

$ cfuturearray \u003d "";

pentru ($ i \u003d 0; $ i<13; $i++) {

$ Cuserline \u003d Inputuserline (); // pune ceva

dacă ($ i\u003e 0) ($ cfuturearray. \u003d "|";)

dacă (CheckFunc ($ csrcline, $ Cuserline) ($ cfuturearray. \u003d "Da";

) Altfel ($ cfuturearray. \u003d "Nu";)

$ Aresult \u003d explodează ("|", $ cfuturearray);

Arrays multidimensională

Multe sisteme de management al site-urilor (SMS) utilizează matrice "cu un domeniu de aplicare". Pe de o parte, aceasta este o bună practică, pe de altă parte, ceea ce face dificilă utilizarea. Chiar dacă autorul este clar doctrina "matricei PHP într-o matrice", atunci nu ar trebui abuzată: nu numai dezvoltatorul va trebui să se obișnuiască cu notația complexă. Adesea, după timp, Creatorul în sine își va aminti de mult timp pe care la scris la început:

"View_Manager" \u003d\u003e Array (41, "Template_Path_stack" \u003d\u003e Array (__ Dir__. "/../view",),

"Router" \u003d\u003e Array ("Routes" \u003d\u003e Array ("Sayhello" \u003d\u003e Array (

"Tip" \u003d\u003e "Zend \\ MVC \\ Router \\ http \\ literal",

"Opțiuni" \u003d\u003e Array ("Route" \u003d\u003e "/" / Sayhello "," Implicits "\u003d\u003e Array (

"Controler" \u003d\u003e "Helloworld \\ Controller \\ Index", "Acțiune" \u003d\u003e "Index",)))))

"Controlere" \u003d\u003e Array ("Invokables" \u003d\u003e Array (

"Helloworld \\ Controller \\ Index" \u003d\u003e "Helloworld \\ Controller \\ indexcontroller"))

Acesta este un eșantion al practicii de matrice PHP în matrice "de la ZF 2. nu prea inspiră la început, dar funcționează și, probabil, face acest cadru de succes (exemplu de la ZendkeleTonaplication / Module / Hellogorld / Config / Module.Config Modulul .php).

O matrice este un design important de date în timpul proiectării și dezvoltării. Opțiunea sa multidimensională a fost odată populară, dar în timp a rămas nevoia de matrimale de maxim două sau trei dimensiuni. Este mai ușor și mai clar, iar din punctul de vedere al profesionalismului atunci când începe ceva înmulțește, înseamnă că ceva în formularea sarcinii sau în cod nu este adevărat.

Simplu, accesibil și ușor de înțeles

Crearea unei matrice într-o matrice pe PHP, este mai bine să limitați cele două-trei niveluri. În ciuda stabilității și fiabilității PHP, face erori în procesarea structurilor sintactice. Puteți să vă puneți cu acest lucru, având un cod de editor bun, obișnuiți să luați în considerare cu precizie paranteze și virgule. Cu toate acestea, PHP nu controlează tipurile de date (aceasta este karma de programare modernă) și permite dezvoltatorului să practice erori semantice.

Regula de control al tipurilor de variabile sau de propriile idei pentru transformarea semanticii în sintaxă - de multe ori lux incomplet. Aceasta este o pierdere a vitezelor de script, lizibilitatea codului, ... Prin urmare, simplitatea codificării este întotdeauna esențială.

PHP are o trăsătură negativă semnificativă: când apare incertitudinea, scriptul pur și simplu atârnă. Nu toți debughirii fac față unor circumstanțe neprevăzute și depinde mult de experiența și intuiția dezvoltatorului. Cu cât este mai ușor algoritmul, informațiile mai accesibile sunt structurate, cu atât mai multe șanse să găsească o eroare sau să nu o permită deloc.

Este caracteristică că atunci când au apărut primele matrice, au fost propuse opțiuni de date sub formă de structuri - o încercare stângace de a crea ceva din diferite tipuri de date. Primul a supraviețuit și a dobândit o nouă sintaxă eficientă, al doilea a coborât jos.

Simple și asociative

Înregistrarea unei matrice bidimensionale este o altă pereche de paranteze "[" și "], de exemplu: $ ASRCDATA înseamnă atrăgătoare la un element de matrice inclus în matricea de $ ASRCDATA. În PHP nu există nicio cerință de a declara date în avans. Orice informație poate fi întotdeauna verificată pentru existență.

Creați foarte eficient ceva numai atunci când este necesar, în forma în care a durat și distruge când a dispărut nevoia. Folosind ca taste (indexuri) nume semnificative, puteți obține designuri citite, semnificative în contextul locației curente din algoritm:

$ Aanketa ["Nume"] \u003d "Ivanov";
$ AANKETA ["Vârsta"] \u003d 42;
$ Aanketa ["Work"] \u003d "Director";
$ Aanketa ["Activ"] \u003d Adevărat;
$ Atac \u003d $ Aanketa;

$ Aanketa ["Nume"] \u003d "Petrov";
$ AANKETA ["Vârsta"] \u003d 34;
$ Aanketa ["Work"] \u003d "Manager";
$ Aanketa ["Activ"] \u003d Adevărat;
$ Atac \u003d $ Aanketa;

$ Aanketa ["Nume"] \u003d "Afanasyev";
$ Aanketa ["Vârsta"] \u003d 28;
$ Aanketa ["Work"] \u003d "Worker";
$ Aanketa ["Activ"] \u003d FALSE;
$ Atac \u003d $ Aanketa;

$ sone. \u003d implode (";", $ atable). "
"; // al doilea matrice PHP în șir
$ Sone. \u003d $ Attable ["muncă"]; // apel la un element al celei de-a doua matrice

Rezultatul acestui exemplu (prima matrice este obișnuită, cheile din el încep cu 0, a doua matrice este asociativă, în el patru chei: "nume", "vârstă", "muncă", "activ"):

$ Sone \u003d "petrov; 34; manager; 1
Administrator";

Pe acest exemplu simplu, puteți vedea cum poate fi aplicat chestionarul creat tuturor angajaților. Puteți crea o gamă de angajați cu indexuri pe numerele tabletei și dacă este necesar un anumit angajat, apoi selectați-l pe numărul tabelului.

Dacă există diviziuni în cadrul organizației sau există lucrători sezonieri sau este obligat să aloce separat pensionarii de lucru, ... Designul "PHP-Array" din matrice este foarte convenabil, dar nu va fi niciodată luată de dimensiune. Două sau trei dimensiuni - o limită pentru o soluție eficientă.

Cheile pentru a lucra cu matrice

Dacă aș fi contorizat cum este aranjat totul, în ultimii ani tradiția erei binare în ultimii ani, când programatierul a vrut să știe exact cum sunt stocate elementele matricei și au dorit să aibă acces direct la ei, au fost complet uitat. Există multe coduri de caractere care ocupă nici un octet în memorie. Cuvântul "Bit" poate găsi acum nimic în operațiunile de căutare a Battal, dar căutarea în matricea PHP este un subiect separat. Accesul la elemente poate fi simplu și asociativ. În primul caz, elementele matricei (având oricare dintre tipurile disponibile în PHP) sunt numerotate 0, 1, 2, în cel de-al doilea caz, programatorul își specifică propriul indice, denumit "cheie" la Accesați valoarea dorită.

$ Aline ["fructe"] \u003d "portocaliu"; // aici php-cheie array \u003d "fructe"

sau (astfel încât totul este corect cu codificarea paginii și codului):

$ Aline \u003d iconv ("UTF-8", "CP1251", "Orange");

Când adăugați o nouă valoare la matricea de $ aline:

$ Aline \u003d iconv ("utf-8", "cp1251", "pic");
$ Aline \u003d iconv ("utf-8", "cp1251", "castravete");
$ Aline \u003d iconv ("UTF-8", "CP1251", "vinete");

ca urmare a executării ciclului:

foreach ($ aline ca $ ck \u003d\u003e $ cv) (
$ Con. \u003d $ Ck. "\u003d". $ Cv. "
";
}

vor fi obținute:

fruit \u003d portocaliu.
0 \u003d piersic
legume \u003d castravete
1 \u003d vinete

Tasta PHP a unei matrice atunci când se adaugă elemente "Peach" și "vinete" se formează secvențial de la 0 și când specifică valoarea acestuia va fi egală cu această valoare.

Îndepărtarea elementelor din matrice

Cea mai ușoară cale este de a procesa. În acest caz, de exemplu, ca urmare a executării ciclului, se vede o serie de sursă și se formează una nouă, în care elementele inutile nu sunt pur și simplu înregistrate.

Puteți face mai ușor. Dacă se aplică ultimul exemplu:

debut ($ aline); // Ștergeți elementul de matrice PHP

rezultatul va fi:

fruit \u003d portocaliu.
legume \u003d castravete
1 \u003d vinete

Opțiunile pentru manipularea elementelor de matrice pot fi construite un set. De exemplu, folosind funcții: Implode () și explodează (), puteți scrie o matrice PHP într-un șir cu un separator și dezasamblați înapoi la o altă matrice - pe un alt separator.

Pentru a șterge pur și simplu o matrice pe PHP, este suficient să scrieți: Ungeți ($ aline);

E destul.

Căutați în Array.

PHP conține căutare specială și in_array () funcții specifice, dar înainte de a vă decide să le utilizați, ar trebui să luați în considerare căutarea în matricea PHP pe cont propriu.

Orice proiect are matrice specifice, în special atunci când o parte a semanticii este transferată în sintaxă și este prezentată cu un set de chei semnificative destul de specifice. Acest lucru vă permite să efectuați propriile caracteristici de căutare care pot fi de asemenea referire.

În PHP, puteți apela funcții al căror nume este determinat în timpul executării programului. Un exemplu foarte practic din biblioteca PHPWord, care vă permite să citiți și să creați documente MS Word:

$ Elemente \u003d matrice ("text", "inline", "texttrun", "link", "preserveXtext", "textbreak",
"ListaMem", "ListaMrun", "Tabel", "imagine", "obiect", "notă de subsol",
"Endnote", "Checkbox", "Textbox", "Field", "Linie");

$ funcții \u003d matrice ();

pentru ($ i \u003d 0; $ i< count($elements); $i++) {
$ Funcții [$ i] \u003d "adăugați". $ Elemente [$ i];
}

Ca rezultat, o serie de funcții $ va primi o matrice de elemente $, adică numele funcțiilor reale care efectuează lucrări cu elemente reale ale documentului.

Apelarea pentru funcțiile de funcționare a elementelor $, puteți obține căutarea perfectă și un rezultat rapid.

Elemente de sortare

Sarcina de sortare a datelor este importantă, iar PHP oferă mai multe funcții pentru acest lucru: Sortare (), RSort (), Asort (), Ksort (), ... Elemente ascendente și descendente Cea de-a doua două funcții păstrează relațiile dintre taste și valori. Uneori are sens să se amestece valorile matricei la întâmplare - shuffle ().

Folosind funcții PHP pentru sortare, nu trebuie să uitați că elementele pot să nu aibă diferite tipuri, dar nu conținutul complet natural. În primul rând, este necesar să se refere foarte atent la sortarea liniilor care conțin litere ruse, sortarea datei, precum și numerele înregistrate în diferite formate.

Cea mai bună modalitate de a scrie o decizie independentă, în orice caz, în etapa de testare a scriptului, este o sortare manuală. Acesta va contribui la oferirea unor situații neprevăzute.

Arrays linie

Datorită funcțiilor Implode () și explodează (), o matrice poate fi ușor transformată în șir și se poate întoarce. Acest lucru vă permite să stocați datele într-o reprezentare compactă și să le implementați într-o stare convenabilă după cum este necesar.

O serie orientată spre un șir deschide noi caracteristici. De exemplu, sarcina de a căuta cuvinte cheie în text necesită faptul că nu este adăugată din nou.

$ Csrcline \u003d "Text Text ListaTitemRun Textbox ListaTitem Textbox Cutie de selectare Caseta de scriere a casetei de subsol";

$ ASRC \u003d Explode (", $ csrcline);
$ cdstline \u003d "";

pentru ($ i \u003d 0; $ i< count($aSrc); $i++) {
$ cfind \u003d "[". $ ASRC [$ i]. "]";
Dacă (! IS_Integer (STPOS ($ CDSTLINE, $ CFIND))) (
$ cdstline. \u003d $ cfind;
}
}
$ ADST \u003d explodează ("] [", $ cdstline);

$ Con \u003d implode (";, $ ADST);

Ca rezultat, variabila de cone $ va primi numai valorile de la linia sursă, care se găsesc acolo pentru o singură dată: "Text; listitemrun; text cutie; listitem; check; cutie; caseta de selectare; caseta de subsol".

Limba rusă în chei și valori

Nu se recomandă utilizarea a ceva legat de codificările naționale în structuri sintactice. Rusia, ca toate celelalte limbi, ale căror simboluri depășesc limitele A-Z, nu vor crea probleme în zona de date, dar nu în sintaxa de cod. Uneori, chiar și o sarcină simplă pe PHP "ieșirea unei matrice la o imprimantă sau pe ecran" va duce la "Cracoyarm", și mai des va opri scriptul.

PHP - Limba loială și toleranța se referă la codificările naționale, dar există o mulțime de situații în care lucrarea efectuată trebuie făcută numai pentru că în locul potrivit și la momentul potrivit va afișa valoarea cheie, recunoașterea care nu va fi posibil.

PHP Sintaxă și Mediu lingvistic

Trebuie amintit că sintaxa PHP este una, dar desenele acestei sintaxe "Deal" cu alte aplicații, cu sistemul de operare, cu opțiuni hardware. Există multe opțiuni, nu este niciodată posibil să se prevadă.

Regula "în Cod este doar codul, iar la intrarea în interior și la ieșire există toate informațiile" va contribui la evitarea surprizelor neprevăzute. Valoarea PHP din matrice poate fi "rusă", dar cheia trebuie să fie corectă sinceră nu numai din pozițiile acestei limbi, ci și din punctul de vedere al muncii sale.

Am folosit deja funcția Array_Search () pentru găsirea valorilor în matrice, deoarece a auzit în mod repetat și citește că funcționează semnificativ mai rapid decât căutarea matricei în ciclu, dar cât de repede nu știa. În cele din urmă a luat mâinile pentru a verifica și a calcula.

Comparați viteza de căutare din matrice utilizând această funcție cu suprafața obișnuită a matricei în foașă și în timp ce ciclurile. Pe 10-100 elemente ale matricei, diferența în invizibilă și timpul atât de puțin încât pot fi prezenți. Dar pentru matrice mari, diferența a fost foarte semnificativă. Cu o creștere a dimensiunii matricei printr-o comandă, timpul de căutare a crescut semnificativ. Cu o sută de mii de articole, viteza de predare a scăzut la 0,013 secunde și, în timp ce până la 0,017, în ciuda faptului că array_search () a încetinit, dar a rămas încă o ordine de mărime mai repede - 0,004 secunde. Pentru un script mare care rulează cu matrice mari, înlocuind căutarea în ciclul pentru a căuta cu Array_Search () nu va fi la toate "Optimizarea puricii".

În acest sens, mi-am amintit o discuție recentă cu unul dintre colegii la locul de muncă - despre faptul dacă programatierul trebuie să cunoască toate aceste funcții lingvistice încorporate sau un "programator al programatorului programator" și cunoștințe generale. Fără a ieși cu raționamentul acestui depozit de minte, cred că este încă necesar să cunoaștem funcțiile, poate nu întreaga sintaxă în detaliu, ci deși ce funcții există și că pot în termeni generali.

UPD: Aveți nevoie de un depozit de programator al minții, de asemenea, necesar! Și îngrijirea cu memoria nu va împiedica (pauză inspirată și interval :)

Sub codul de script Habracine, care a calculat timpul:

$ Masa \u003d 100000; // numărul de valori din matricea în care vom căuta
$ căutare \u003d 50.000; // În matrice vom căuta această valoare
$ primul_result \u003d matrice (); // Gama de rezultate, pentru a calcula valoarea medie a primei opțiuni
$ Secund_result \u003d matrice (); // Gama de rezultate, pentru a calcula valoarea medie a celei de-a doua opțiuni
$ terter_result \u003d matrice (); // o serie de rezultate, pentru a calcula valoarea medie a celei de-a treia opțiuni

// creați și completați o matrice
$ test_array \u003d interval (0, $ Mass-1); // vă mulțumesc selenit))

/*
$ test_array \u003d matrice ();
pentru ($ i \u003d 0; $ i<$mass; $i++)
{
$ test_array \u003d $ i;
}
*/

// ciclu pentru a număra valorile medii
pentru ($ d \u003d 0; $ d<30; $d++) {

// *************** Caută de Array_Search *******************

// rulați un număr de timp
$ time_start \u003d microtime (1);
// Căutare
$ Key \u003d array_search ($ căutare, $ test_array, adevărat);
// Daca este gasit
Dacă (tasta $! \u003d\u003d fals) // aveți nevoie! \u003d\u003d și nu! \u003d, deoarece numărul primului element este 0
{
Echo $ test_array [$ cheie];
}
$ Time_end \u003d microtime (1);
// numărarea numărului de sfârșit

// scrieți într-o serie de valori
$ First_result \u003d $ time_end - $ time_startsh;

// *************** Căutare după matrice cu un ciclu Foreach *******************

// rulați un număr de timp
$ time_start \u003d microtime (1);
// căutați-vă
foreach ($ test_array ca $ ta)
{
dacă ($ ta \u003d\u003d $ căutare)
{
ECHO $ \u200b\u200bTA;
Pauză;
}
}
$ Time_end \u003d microtime (1);
// numărarea numărului de sfârșit

// scrieți într-o serie de valori
$ Secund_result \u003d $ time_end - $ time_startsh;

// *************** Caută după matrice cu un ciclu în timp ce *******************

// rulați un număr de timp
$ time_start \u003d microtime (1);

// determinați lungimea matricei
$ Count \u003d Count ($ test_array);
$ j \u003d 0;
// căutați-vă
În timp ce ($ j<$count)
{
dacă ($ test_array [$ j] \u003d\u003d $ Căutare) // Dacă este găsit
{
ECHO $ \u200b\u200bTEST_ARARY [$ J];
Pauză;
}
$ j ++;
}
$ Time_end \u003d microtime (1);
// numărarea numărului de sfârșit

// scrieți într-o serie de valori
$ Terter_result \u003d $ time_end - $ time_start;
}

$ srednee1 \u003d array_sum ($ First_result) / Count ($ First_result);
$ srednee2 \u003d array_sum ($ secund_result) / Count ($ secund_result);
$ srednee3 \u003d array_sum ($ al treilea_result) / număr ($ al treilea_result);

Printf ("Primul cod se face în medie pentru:% 7f secunde", $ srednee1);
Printf ("Al doilea cod se face în medie pentru:% 7f secunde", $ srednee2);
Printf ("Cel de-al treilea cod se face în medie pentru:% 7f secunde", $ srednee3);

// rezultat:
// primul cod este efectuat în medie pentru: 0.0000295 secunde
// al doilea cod se face în medie pentru: 0.0153386 secunde
// al treilea cod efectuat în medie pentru: 0.0226001 secunde



Ți-a plăcut articolul? Împărtășește-l