/ /PHP: matrice în matrice. Căutare PHP Array

PHP: un tablou dintr-un tablou. Căutați în tabloul PHP

Programarea este despre sintaxă și semantică.Primul este determinat de regulile limbajului, al doilea de experiența dezvoltatorului. În ceea ce privește matricele, dezvoltatorul poate încărca în mod specific sintaxa cu semantică. Acesta nu este încă un obiect, dar nu mai este o matrice în sensul tradițional. PHP vă oferă posibilitatea de a crea matrice de variabile de diferite tipuri, inclusiv ele însele. Un element de matrice poate fi o funcție, adică abilitatea de a încărca matricea cu un algoritm real, sens real.

Sintaxa este stabilă, dar se modifică de la o versiune la altaversiuni și este posibil să nu fie întotdeauna compatibile chiar și de jos în sus. Portabilitatea programului este o realizare bine uitată a secolului trecut. Semantica evoluează și poate fi întotdeauna aplicată nu numai în orice versiune a oricărei limbi; A devenit o tradiție folosirea construcțiilor sintactice pentru a exprima ceea ce nici măcar nu era prevăzut de regulile limbii. Acest lucru poate fi cel mai ușor de înțeles folosind exemplul de matrice.

Construirea de tablouri

Array în PHP are o sintaxă și o funcționalitate convenabilă. Acest tip de date poate fi descris în prealabil, dar adesea este convenabil să creați matrice din mers, după cum este necesar.

public $aNiciuna = array(); // tabloul este descris și nu conține nimic

public $aFact = array("avocado", "piersică", "cireș"); // această matrice are trei elemente

Crearea unei matrice în timp ce se verifică o condiție:

$cSrcLine = "linie de date analizată";

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

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

if (checkFunc($cSrcLine, $cUserLine) {

$aResult[] = „Da”; // adaugă la matricea PHP

} altfel {

$aResult[] = „Nu”;

}

}

Ca rezultat al executării acestui exemplu, acesta va creao matrice de 13 elemente, ale căror valori vor fi doar șirurile „Da” sau „Nu”. Elementele vor primi indecși de la 0 la 12. Același efect poate fi obținut prin scrierea mai întâi a matricei PHP „viitoare” într-un șir:

$cFutureArray = "";

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

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

if ($i > 0) { $cFutureArray .= "|"; }

if (checkFunc($cSrcLine, $cUserLine) { $cFutureArray .= „Da”;

} else { $cFutureArray .= „Nu”; }

}

$aRezultat = explode("|", $cFutureArray);

matrice php în șir

Matrice multidimensionale

Multe sisteme de management al conținutului (CMS)utilizați matrice în mare măsură. Pe de o parte, aceasta este o bună practică, pe de altă parte, o face dificil de utilizat. Chiar dacă autorul înțelege doctrina „matrice PHP într-o matrice”, nu ar trebui să abuzeze de ea: nu numai dezvoltatorul va trebui să se obișnuiască cu notația complexă. Adesea, după un timp, creatorul însuși își va aminti mult timp ceea ce a scris la început:

returnează matrice (

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

"router" => array("routes" => array ("sa salută" => array(

"type" => "ZendMvcRouterHttpLiteral",

"opțiuni" => matrice("rută" => "/să salută", "prestabilite" => matrice(

"controller" => "HelloworldControllerIndex", "action" => "index",))))),

"controllers" => array("invokables" => array(

„HelloworldControllerIndex” => „HelloworldControllerIndexController”))

);

Acesta este un exemplu de practică „Matrice PHP într-o matrice” de la ZF2. Nu prea inspirat la început, dar funcționează și poate face ca acest cadru să aibă succes (exemplu din ZendSkeletonApplication/module/Helloworld/config/module.config.php).

eliminați elementul de matrice php

Array este un construct de date important în timpuldesign și dezvoltare. Versiunea sa multidimensională a fost cândva populară, dar de-a lungul timpului a rămas nevoia de matrice de maximum două sau trei dimensiuni. Este mai simplu și mai clar în acest fel, iar din punct de vedere profesional, atunci când ceva începe să se înmulțească, înseamnă că ceva este greșit în declarația problemei sau în cod.

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

Crearea unei matrice într-o matrice în PHP este cea mai bunăsă fie limitat la două sau trei niveluri. În ciuda stabilității și fiabilității PHP, face erori atunci când procesează structuri sintactice. Puteți suporta asta dacă aveți un editor de cod bun și vă obișnuiți să numărați cu precizie parantezele și virgulele. Cu toate acestea, PHP nu controlează tipurile de date (aceasta este karma programării moderne) și permite dezvoltatorului să practice erorile semantice.

Regula pentru a controla tipurile de variabile saupropriile idei pentru transformarea semanticii în sintaxă sunt adesea un lux inaccesibil. Aceasta este o pierdere a vitezei de script, a lizibilității codului, ... deoarece simplitatea în codificare este întotdeauna esențială.

PHP are o caracteristică negativă semnificativă:când apare incertitudinea, scenariul pur și simplu se blochează. Nu toți depanatorii pot face față circumstanțelor neprevăzute și multe depind de experiența și intuiția dezvoltatorului. Cu cât algoritmul este mai simplu, cu atât informația este mai accesibilă, cu atât sunt mai mari șansele de a găsi o eroare sau de a o preveni complet.

Este caracteristic că atunci când au apărut primele matrice,au fost propuse variante 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ă, în timp ce cel din urmă a devenit istorie.

Matrice simple și asociative

Scrierea unui tablou bidimensional este o altă perecheparantezele „[” și „]”, de exemplu: $aSrcData[1][2] înseamnă acces la elementul [2] al matricei [1], inclus în matricea $aSrcData. Nu există nicio cerință de declarare a datelor în prealabil în PHP. Orice informație declarată poate fi întotdeauna verificată pentru existență.

Este foarte eficient să creezi ceva doar cândatunci când este nevoie, în forma în care a fost cerut și distrus când nevoia a dispărut. Folosind nume semnificative ca chei (indexuri), puteți obține constructe lizibile care sunt semnificative în contextul locului curent în algoritm:

$aAnketa["name"] = "Ivanov";
$aAnketa[„varsta”] = 42;
$aAnketa["work"] = "Director";
$aAnketa["activ"] = adevărat;
$aTable[] = $aAnketa;

$aAnketa["name"] = "Petrov";
$aAnketa[„varsta”] = 34;
$aAnketa["work"] = "Manager";
$aAnketa["activ"] = adevărat;
$aTable[] = $aAnketa;

$aAnketa["name"] = "Afanasyev";
$aAnketa[„varsta”] = 28;
$aAnketa["work"] = "Lucrător";
$aAnketa["activ"] = fals;
$aTable[] = $aAnketa;

$sOne .= implod ("; ", $aTable[1]) . „<br/>”; // a doua matrice PHP la linie
$sOne .= $aTable[1]["work"]; // accesarea unui element din a doua matrice

Rezultatul acestui exemplu (prima matrice este normală, cheile din ea încep de la 0, a doua matrice este asociativă, are patru chei: „nume”, „vârstă”, „muncă”, „activ”):

$sOne = "Petrov; 34; Manager; 1<br/>Manager";

În acest exemplu simplu, puteți vedea cumchestionarul creat poate fi aplicat tuturor angajaților. Puteți crea o serie de angajați cu indici după numere de personal și, dacă aveți nevoie de un anumit angajat, selectați-l după numărul de personal.

Dacă organizația are divizii, sau existălucrători sezonieri sau trebuie să identificați separat pensionarii care lucrează, ... designul „Matrice PHP într-o matrice” este foarte convenabil, dar nu ar trebui să vă lăsați niciodată duși de dimensiune. Două sau trei dimensiuni reprezintă limita pentru o soluție eficientă.

caută în matrice php

Chei pentru lucrul cu matrice

Dacă înainte conta cum a funcționat totul, atunciÎn ultimii ani, tradițiile erei binare, când programatorul dorea să știe exact cum erau stocate elementele unui tablou și dorea să aibă acces direct la ele, au fost complet uitate. Au apărut 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țiunile de căutare de biți, dar căutarea într-o matrice 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 al doilea caz, programatorul își specifică propriul index, adesea numit „cheie”, pentru a accesa valoarea dorită.

$aLine["fruit"] = "portocale"; // aici cheia matricei PHP = "fructe"

sau (pentru ca totul să fie corect, respectând codificarea paginii și codul):

$aLine[iconv("utf-8", "CP1251", "fructe")] = iconv("utf-8", "CP1251", "orange");

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

$aLine[] = iconv("utf-8", "CP1251", "piersică");
$aLine[iconv("utf-8", "CP1251", "legumă")] = iconv("utf-8", "CP1251", "castravete");
$aLine[] = iconv("utf-8", "CP1251", "vinete");

ca rezultat al executării buclei:

foreach ($aLine ca $ck => $cv) {
$cOne .= $ck . „=". $cv . „<br/>”;
}

vor fi primite:

fruct=portocale
0=piersică
legume=castravete
1=vinete

Cheia de matrice PHP la adăugarea elementelor „piersică” și „vânătă” se formează secvențial de la 0, iar la specificarea valorii acesteia va fi egală cu această valoare.

Eliminarea elementelor dintr-o matrice

php șterge matrice

Cel mai simplu mod de a elimina un element de matrice PHP este săprelucrarea acestuia. În acest caz, de exemplu, ca urmare a executării unei bucle, matricea originală este scanată și se formează una nouă, în care pur și simplu nu sunt scrise elemente inutile.

Ar putea fi mai ușor. Dacă aplicăm ultimul exemplu:

unset($aLine[0]); // elimină elementul de matrice PHP

atunci rezultatul va fi:

fruct=portocale
legume=castravete
1=vinete

Opțiuni pentru manipularea elementelor matriceimulte pot fi construite. De exemplu, folosind funcțiile: implode() și explode(), puteți scrie o matrice PHP într-un șir cu un delimitator și o analizați înapoi într-o altă matrice folosind un delimitator diferit.

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

E destul.

Căutați într-o matrice

PHP conține funcții speciale de căutarearray_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ă efectuați singur căutări în matrice PHP.

cheie matrice php

Orice proiect are un domeniu specific,tablouri construite, mai ales atunci când o parte din semantică este transferată în sintaxă și este reprezentată de un set de chei semnificative foarte specifice. Acest lucru vă permite să efectuați propriile funcții de căutare, care pot fi, de asemenea, etichetate într-un mod semnificativ.

În PHP, puteți apela funcții al căror nume este determinat în timpul execuției 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”,
„Notă de final”, „CheckBox”, „TextBox”, „Field”, „Line”);

$functii = array();

pentru ($i = 0; $i < count($elemente); $i++) {
$functions[$i] = „adăugați” . $elemente[$i];
}

Ca rezultat, matricea $functions va primi valorile matricei $elements, adică numele funcțiilor reale care funcționează cu elemente reale ale documentului.

Apelând $functions[4] pe $elements[4], puteți obține o căutare perfectă și rezultate rapide.

Sortarea articolelor

Sarcina de sortare a datelor este importantă șiPHP oferă mai multe funcții pentru aceasta: sort(), rsort(), asort(), ksort(), ... Elemente crescătoare și descrescătoare, celelalte două funcții stochează relațiile dintre chei și valori. Uneori este logic să amestecați aleatoriu valorile matricei - shuffle().

valoarea php în matrice

Când utilizați funcții PHP pentru sortare, nu ar trebuiuitați că elementele pot avea nu numai tipuri diferite, ci și conținut nu în întregime natural. În primul rând, trebuie să fii foarte atent la sortarea șirurilor care conțin litere rusești, sortarea datelor, precum și a numerelor care sunt scrise în diferite formate.

matrice php în matrice

Cel mai bun mod de a scrie singur o soluție ideală, cel puțin în etapa de testare a scriptului, este sortarea manuală. Va ajuta la anticiparea situațiilor neprevăzute.

Matrice de șiruri

Datorită funcțiilor implode() și explode(), matriceapoate fi ușor transformat într-un șir și returnat. Acest lucru vă permite să stocați datele într-o reprezentare compactă și să le extindeți într-o stare convenabilă, după cum este necesar.

O matrice convertită într-un șir deschide noi posibilități. De exemplu, sarcina de a căuta cuvinte cheie într-un text necesită ca ceea ce este găsit să nu fie adăugat din nou.

$cSrcLine = "Text text ListItemRun TextBox ListItem TextBox Caseta de selectare CheckBox TextBox Notă de subsol";

$aSrc = explode(" ", $cSrcLine);
$cDstLine = "";

pentru ($i=0; $i < count($aSrc); $i++) {
$cFind = "[" . $aSrc[$i] . „]”;
dacă ( ! is_integer(strpos($cDstLine, $cFind))) {
$cDstLine .= $cFind;
}
}
$aDst = explode("][", $cDstLine);

$cOne = implode("; ", $aDst);

Ca urmare, variabila $cOne va primi doar acele valori din șirul sursă care apar acolo o dată: „Text; ListItemRun; TextBox; ListItem; Check; Box; CheckBox; Footnote”.

Limba rusă în chei și semnificații

Nu este recomandat să folosiți nimic legatcu codificari nationale, in structuri sintactice. Rusa, ca toate celelalte limbi ale căror caractere se extind dincolo de a-z, nu va crea probleme, fiind în regiunea de date, dar nu în sintaxa codului. Uneori, chiar și o sarcină simplă în PHP „a ieși o matrice către imprimantă sau pe ecran” va duce la „bucăți nebunești”, iar cel mai adesea scriptul se va opri pur și simplu.

PHP este un limbaj prietenos și tolereazăcodificări naționale, dar există multe situații în care volumul de lucru finalizat trebuie reluat doar pentru că o valoare cheie apare la locul potrivit și la momentul potrivit, ceea ce nu este posibil de recunoscut.

Sintaxă PHP și mediu de limbaj

Un lucru de reținut este că sintaxa PHP este un lucru, darconstructele acestei sintaxe „se ocupă” cu alte aplicații, cu sistemul de operare, cu opțiunile hardware. Există multe opțiuni, nu este niciodată posibil să asigurați totul.

Regula „în cod există doar cod, dar în intrare,există tot felul de informații în interior și rezultatul va ajuta la evitarea surprizelor neprevăzute. O valoare PHP dintr-o matrice poate fi „rusă”, dar cheia acesteia trebuie să fie corectă din punct de vedere sintactic nu numai din punctul de vedere al limbajului dat, ci și din punctul de vedere al mediului său de operare.