PHP: matrice în matrice. Căutarea într-o serie de PHP

Programarea este sintaxa și semantica. Primul este determinat de regulile limbii, al doilea de experiența dezvoltatorului. În ceea ce privește matricele, dezvoltatorul poate încărca obiectiv sintaxa cu semantica. Acesta nu este un obiect, dar nu o matrice în sensul tradițional. PHP face posibilă crearea de tablouri de variabile de diferite tipuri, inclusiv ele însele. Un element al unei matrice poate fi o funcție, adică capacitatea de a încărca o matrice cu un algoritm real, cu un sens real.

Sintaxa este stabilă, dar variază de la versiune la versiune și nu poate fi întotdeauna compatibilă, chiar și de jos în sus. Programe de portabilitate - realizarea bine uitată a secolului trecut. Semantica se dezvoltă și poate fi întotdeauna aplicată nu numai în variante ale oricărei limbi, dar a devenit o tradiție de a folosi construcțiile sintactice pentru a exprima faptul că nu au fost prevăzute chiar regulile limbii. Pe exemplul matricelor, acest lucru poate fi înțeles cel mai simplu.

Amenajarea clădirilor

Matricea din PHP are sintaxă convenabilă și funcționalitate. acest tip de date poate fi descrisă în prealabil, dar este adesea convenabil să se creeze arrays în zbor, după cum este necesar.

public $ aNone = array () - // matricea este descrisă și nu conține nimic

public $ aFact = array (`avocado`, `piersic`, `cherry`) - // in acest tabel exista trei elemente

Crearea unei matrice în timp ce verificați o condiție:

$ cSrcLine = `șir de date analizate`;

pentru ($ i = 0- $ i<13- $ i ++) {

$ cUserLine = inputUserLine () - // introduceți ceva

dacă (checkFunc ($ cSrcLine, $ cUserLine) {

$ aResult [] = `Da`- // adăugați la matricea PHP

} altceva {

$ aResult [] = `Nu`;

}

}

Ca urmare a executării acestui exemplu, se va crea o serie de 13 elemente, ale căror valori vor fi numai liniile "Da" sau "Nu". Elementele vor primi indici de la 0 la 12. Același efect poate fi obținut prin scrierea unui "viitor" array PHP unui șir:

$ cFutureArray = ``;

pentru ($ i = 0- $ i<13- $ i ++) {

$ cUserLine = inputUserLine () - // introduceți ceva

dacă ($ i> 0) `;

dacă (checkFunc ($ cSrcLine, $ cUserLine) {$ cFutureArray. = `Da`;

} altceva {$ cFutureArray. = `Nu`-}

}

$ aResult = explode (`|`, $ cFutureArray);

php array la șir

Seturi multidimensionale

Multe sisteme de gestionare a site-urilor (SMS) folosesc rețele "la scară mare". Pe de o parte, aceasta este o bună practică, pe de altă parte, face dificilă aplicarea. Chiar dacă autorul înțelege doctrina "array PHP într-o matrice", nu ar trebui să fie folosit în mod greșit: nu numai că dezvoltatorul trebuie să se obișnuiască cu o notație complexă. Adesea, după un timp, creatorul însuși își va aminti mult timp ceea ce a scris la început:

matrice retur (

`view_manager` => array (41, `template_path_stack` => array (__DIR__ ./../view `),

`router` => array (`rute` => array (`sayhello` => array (

`tip` => `Zend Mvc Router Http Literal`;

`opțiuni` => array (`route` => `/ sayhello`, `default` => array (

`controller` => `Helloworld Controller Index`, `action` => `index`,)))

"controluri" => array ("invokables" => array (

`Helloworld Controller Index` => `Helloworld Controller IndexController`))

);

Aceasta este o probă practică «PHP-matrice în matrice“ de ZF 2. Nu prea inspirat la început, dar funcționează, și, probabil, face ca acest cadru de succes (de exemplu, din modulul ZendSkeletonApplication / modul / helloworld / config / module.config.php).

ștergeți elementul din matricea php

Un matrice este un design important al datelor în timpul proiectării și dezvoltării. Versiunea sa multivariată a fost o dată populară, dar în timp, a existat o nevoie de rețele de maxim două sau trei dimensiuni. Deci, este mai ușor și mai ușor de înțeles, dar din punct de vedere profesional, când ceva începe să se înmulțească, atunci ceva în declarația problemei sau în cod nu este cazul.

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

Creând o matrice php într-o matrice, este mai bine să se limiteze la două sau trei nivele. În ciuda stabilității și fiabilității PHP, aceasta permite erori în procesarea construcțiilor sintactice. Acest lucru poate fi tolerat prin a avea un editor de cod bun, obișnuiți să contorizați exact paranteze și virgule. Cu toate acestea, PHP nu controlează tipurile de date (aceasta este karma programării moderne) și permite dezvoltatorului să practice erori semantice.

Regula de control al tipurilor de variabile sau ideile proprii de a transforma semantica în sintaxă este adesea un lux inadmisibil. Aceasta este o pierdere a vitezei scriptului, lizibilitatea codului, ... prin urmare, simplitatea codării are întotdeauna o valoare semnificativă.

PHP are o caracteristică negativă semnificativă: atunci când apare incertitudinea, scriptul se blochează. Nu toți debuggerii se confruntă cu circumstanțe neprevăzute, iar multe depind de experiența și intuiția dezvoltatorului. Cu cât algoritmul este mai simplu, cu atât informația este mai structurată, cu atât este mai probabil să găsești o eroare sau să nu recunoști deloc.

Este caracteristic faptul că atunci când au apărut primele tablouri, au fost propuse variante de date sub formă de structuri - o încercare ciudată de a crea ceva din diferite tipuri de date. Primul a supraviețuit și a dobândit o nouă sintaxă eficientă, aceasta din urmă a căzut în istorie.

Matrice simple și asociative

Înregistrarea unui tablou bidimensional - este o altă pereche de paranteze „[“ și „]“, de exemplu: $ aSrcData [1] [2] înseamnă accesul la un element [2] al șirului [1], intrare matrice $ aSrcData. În PHP, nu există nici o obligație de a declara datele în avans. Orice informație declarată poate fi întotdeauna verificată pentru existență.

Este foarte eficient să creați ceva numai atunci când este necesar, sub forma în care era necesar, și să îl distrugeți atunci când nevoia pentru el a dispărut. Folosind nume semnificative ca chei (indici), puteți obține construcții care pot fi citite care sunt semnificative în contextul locului curent în algoritm:

$ aAnketa [`name`] = `Ivanov`-
$ aAnketa [`age`] = 42-
$ aAnketa [`work`] = `Director`
$ aAnketa [`activ`] = true-
$ aTable [] = $ aAnketa-

$ aAnketa [`name`] = `Petrov`-
$ aAnketa [`age`] = 34-
$ aAnketa [`work`] = `Manager`
$ aAnketa [`activ`] = true-
$ aTable [] = $ aAnketa-

$ aAnketa [`name`] = `Afanasiev`-
$ aAnketa [`vârsta`] = 28-
$ aAnketa [`work`] = `Muncă`
$ aAnketa [`active`] = false-
$ aTablu [] = $ aAnceta;

$ sOne. = implode (";", $ aTable [1]). `
`- // a doua matrice PHP într-un șir
$ sOne. = $ aTable [1] [`work`] - // accesați un element al celui de-al doilea matrice

Rezultatul acestui exemplu (prima matrice - cheile obișnuite din acesta începe cu 0, a doua matrice - asociative, există patru taste: „nume“, „vârsta“, „muncă“, „activ“):

$ sOne = `Petrov-34- Manager- 1
Manager ";



În acest exemplu simplu, puteți vedea modul în care chestionarul creat poate fi aplicat tuturor angajaților. Puteți crea o serie de angajați cu indicii după numerele lor și, dacă aveți nevoie de un angajat specific, selectați-l cu numărul angajatului.

Dacă organizația dvs. are divizii sau au de lucru sezonier, sau dacă doriți să aloce pensionarii care lucrează separat ... Design „PHP-matrice în matrice“ foarte convenabil, dar ar trebui să nu se implice în dimensiunea. Două sau trei dimensiuni reprezintă limita pentru o soluție eficientă.

căutare în php array

Chei pentru lucrul cu tablouri

Dacă înainte de a conta, cum funcționează lucrurile, în ultimii ani, tradiția erei binare, atunci când un programator vrut să știe exact modul în care sunt stocate elementele de matrice, și a dorit să le aibă acces direct, complet uitată. Există mai multe codificări de caractere care ocupă mai mult de un octet în memorie. Cuvântul "bit" poate fi găsit acum doar în operațiile de căutare bit, dar căutarea în matricea PHP este un subiect separat. Accesul la elemente poate fi simplu și asociativ. În primul caz, elementele de matrice (care au oricare din PHP tipuri disponibile) sunt numerotate de la 0, 1, 2, ... În al doilea caz, programatorul specifică propria sa indice, adesea menționată ca o „cheie“ pentru a accesa valoarea dorită.

$ aLine ["fruct"] = "portocaliu" - // aici cheia PHP a matricei = "fruct"

sau (astfel încât totul să fie corect cu codarea paginii și a codului):

$ Aline [iconv ( `UTF-8`, `CP1251`, "fruct")] = iconv ( `UTF-8`, `CP1251`, "orange");

Când adăugați $ aLine la o nouă valoare:

$ aLine [] = iconv ("UTF-8", "CP1251", "piersic") -
$ aLine [iconv ("UTF-8", "CP1251", "legume")] = iconv ("UTF-8", "CP1251"
$ aLine [] = iconv ("UTF-8", "CP1251", "vinete");

ca urmare a ciclului:

foreach ($ aLine ca $ ck => $ cv) {
$ cOne. = $ ck. `=`. $ cv. `
„-
}

vor primi:

fructe = portocaliu
0 = piersic
legumele = castravete
1 = vinete

Cheia PHP a matricei cu adăugarea elementelor "piersic" și "vinete" se formează secvențial de la 0, iar când specificați valoarea ei va fi egală cu această valoare.

Eliminarea elementelor dintr-un matrice

php elimina matricea

Cea mai ușoară modalitate de a elimina un element dintr-o matrice PHP în timpul procesării acesteia. În acest caz, de exemplu, ca urmare a executării buclei, matricea originală este scanată și este creată o nouă, în care elementele inutile nu sunt pur și simplu scrise.

Este posibil să acționați mai ușor. Dacă se aplică ultimul exemplu:

unset ($ aLine [0]) - // elimina elementul din array PHP

atunci rezultatul va fi:

fructe = portocaliu
legumele = castravete
1 = vinete

Variantele de manipulare a elementelor de tablouri pot fi construite foarte mult. De exemplu, folosind funcțiile: implode () și explode (), puteți scrie o mazăre PHP într-un șir unic delimitat și o puteți parcurge într-o altă matrice - printr-un alt separator.

Pentru a șterge pur și simplu o matrice întreagă în PHP, scrie pur și simplu: unset ($ aLine);

E de ajuns.

Căutați într-un matrice

PHP conține funcții speciale de căutare array_keys (), array_values ​​(), array_key_exists (), și in_array (), dar înainte de a vă decide să le utilizați, ar trebui să vă gândiți să faceți o căutare în matricea PHP pe cont propriu.

php array key

Orice proiect este concret subiectul, construite, mai ales când o parte din semantică este transferată în sintaxă și este reprezentată de un set de chei complet concrete și semnificative. Aceasta vă permite să efectuați propriile funcții de căutare, care pot fi desemnate în mod semnificativ.

În PHP, puteți apela funcții ale căror nume este definit î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:

$ elements = array (`Text`, `Inline`, `TextRun`, `Link`, `PreserveText`, `TextBreak`,
ListItem, ListItemRun, Tabel, Imagine, Obiect, notă de subsol,
"Endnote", "CheckBox", "TextBox", "Câmp", "Linie");

$ funcții = array ();

pentru ($ i = 0- $ i < count ($ elements) - $ i ++) {
$ funcții [$ i] = `adaugă`. $ elemente [$ i] -
}

Ca rezultat, matricea de funcții $ va obține valorile matricei de elemente $, adică numele funcțiilor reale care funcționează cu elementele reale ale documentului.

Apelarea funcțiilor $ [4] pentru elemente $ [4], puteți obține o căutare ideală și un rezultat rapid.

Sortarea elementelor

date referitoare la sarcina de sortare este importantă, și PHP oferă mai multe funcții pentru: sortare (), rsort (), asort (), ksort (), ... ascendentă și elemente descendent din ultimele două funcții păstreze relațiile dintre cheile și valorile. Uneori are sens să se amestece valorile matricei aleatoriu - shuffle ().

valoarea php în matrice

Folosind funcțiile PHP pentru sortare, nu trebuie să uităm că elementele pot avea nu numai tipuri diferite, ci și conținut destul de natural. Mai întâi de toate, trebuie să fii foarte atent la sortarea liniilor care conțin scrisori rusești, sortarea datei, precum și numerele care sunt înregistrate în diferite formate.

php array în matrice

Cea mai bună modalitate de a vă scrie o soluție ideală, cel puțin în faza de testare a scriptului, este sortarea manuală. Aceasta va ajuta la anticiparea situațiilor neprevăzute.

Seturi de mici dimensiuni

Cu funcțiile implode () și explode (), matricea poate fi ușor transformată într-un șir și returnată. Acest lucru vă permite să stocați datele într-o vizualizare compactă și să le deplasați într-o stare convenabilă, după cum este necesar.

Un matrice la rând deschide noi posibilități. De exemplu, sarcina de a căuta cuvinte cheie în text necesită ca rezultatul căutării să nu fie adăugat în mod repetat.

$ cSrcLine = `Text Text ListItemRun TextBox ListItem TextBox Check Box CheckBox TextBox Footnote`;

$ aSrc = explode (``, $ cSrcLine) -
$ cDstLine = ``;

pentru ($ i = 0- $ i < număr ($ aSrc) - $ i ++) {
$ cFind = `[`. $ aSrc [$ i]. "]
dacă (! is_integer (strpos ($ cDstLine, $ cFind))) {
$ cDstLine. = $ cFind-
}
}
$ aDst = explode (`] [`, $ cDstLine) -

$ cOne = implode (`-`, $ aDst);

Ca urmare, variabila $ Cone primesc numai valorile din liniile originale care îndeplinesc acolo o dată: „Textul- ListItemRun- TextBox- ListItem; Box- CheckBox- Nota de subsol efectuat control“.

Limbajul rusesc în chei și sensuri

Nu este recomandat să se utilizeze nimic legat de codificarea națională în construcții sintactice. Limba rusă, ca toate celelalte limbi ale căror caractere sunt în afara a-z, nu va cauza probleme în zona de date, dar nu în sintaxa codului. Uneori, chiar și o sarcină simplă din PHP "de a scoate un matrice pe o imprimantă sau pe un ecran" va duce la "krakozyabram", și mai des doar opriți scenariul.

PHP - limbaj loial și tolerant al caracterului național, dar există multe situații în care volumul de muncă efectuate trebuie să facă din nou doar pentru că în locul potrivit, la momentul potrivit va apărea cheia, identifica care nu va fi posibil.

Sintaxă PHP și mediu de limbă

Amintiți-vă că sintaxa PHP este un lucru, dar sintaxa acestei sintaxii "se ocupă" cu alte aplicații, cu sistemul de operare, cu opțiuni hardware. Există multe opțiuni, nu este niciodată posibil să se aibă în vedere totul.

Regula „în cod există doar codul, iar la intrare, în interior și la ieșire nu există nici o informație“ va ajuta la evitarea surprize neașteptate. PHP-valoare în matrice poate fi „rus“, dar cheia este să fie corect sintactic, nu numai din punctul de vedere al limbii, ci și în ceea ce privește mediul său de lucru.

Distribuiți pe rețelele sociale:

înrudit
Matricea. Elementele matricei. Sumă elemente elemente matrice, numărMatricea. Elementele matricei. Sumă elemente elemente matrice, număr
Arrays sunt ... O scurtă introducere la subiectArrays sunt ... O scurtă introducere la subiect
JS foreach obiect ca design varianteJS foreach obiect ca design variante
Bucle eficiente de foreach: PHP și mese regulateBucle eficiente de foreach: PHP și mese regulate
PHP: ultimul element. Arra în dinamicăPHP: ultimul element. Arra în dinamică
jаvascript: typeof - nevoie sau noi caracteristicijаvascript: typeof - nevoie sau noi caracteristici
Java Array. Arrays în Java. Java pentru începătoriJava Array. Arrays în Java. Java pentru începători
jаvascript Array pentru a stoca un număr nelimitat de variabilejаvascript Array pentru a stoca un număr nelimitat de variabile
Practica PHP: comparație șirPractica PHP: comparație șir
Stack-ul / pop-ul jаvascript StackStack-ul / pop-ul jаvascript Stack
» » PHP: matrice în matrice. Căutarea într-o serie de PHP