Parcurgerea matricelor bidimensionale în php. Matrice

Lecția va acoperi posibilitățile de lucru cu tablouri în PHP, declararea unui tablou, tipuri de tablouri: tablouri multidimensionale și asociative

  1. Matrice cu indici numerici
  2. $fruits="măr"; $fructe="pere"; $fructe="portocale"; $fruits="caise";

    Această opțiune pentru inițializarea matricei nu este practic utilizată astăzi. Se folosește următoarea opțiune pentru lucrul cu matrice:

  3. Matrice asociativă
  4. Această opțiune pentru crearea unei matrice folosește un obiect matrice:

    $fructe = array(1 => "mere", 2 => "pere", 3 => "portocale", 4 => "caise"); // Din PHP 5.4 $fruits = array[ 1 => "măr", 2 => "pere", 3 => "portocale", 4 => "caise" ];

    Accesarea elementelor de matrice

    1 2 3 4 5 6 7 8 $fructe [ 0 ] = „măr” ; $fructe [ 1 ] = "pere" ; $fructe [ 2 ] = "portocale" ; $fructe [ 3 ] = „caisă” ; ecou „Primul element al matricei este „. $fructe[0]. "
    "; ecou „Al doilea element al matricei este „. $fructe[1]. "
    "; ecou „Al treilea element al matricei este „. $fructe[2]. "
    " ;

    $fruits="măr"; $fructe="pere"; $fructe="portocale"; $fruits="caise"; echo „Primul element al matricei este „. $fructe."
    "; echo "Al doilea element al matricei este ". $fruits."
    "; echo "Al treilea element al matricei este ". $fruits."
    ";

    Rezultatul executării programului va fi:

    Important: Indicele unui element dintr-o matrice asociativă poate fi nu un număr, ci un cuvânt (tip şir)

    Să ne uităm la un exemplu:

    Exemplu: Creați un student cu matrice cu valorile numelui, prenumelui și vârstele elevilor. Afișați valorile elementelor matricei

    $student = array("Nume" => Ioan, "Nume" => Smith, "Vârsta" => 20); echo „nume de utilizator” . $student[„Nume”] . "


    ";

    $student["Name"] = "Ioan"; $student["Surname"] = "Smith"; $student[„Vârsta”] = 20; echo „nume de utilizator” . $student[„Nume”] . "
    "; echo "numele utilizatorului" . $student["Numele de familie"] . "
    "; echo "vârsta utilizatorului" . $student["Vârsta"] . "
    ";

    Rezultat:

    Important: Cheile de tip șir (indexuri) trebuie să fie întotdeauna incluse între ghilimele

    Matrice indexate fără cheie:

    De asemenea, trebuie luat în considerare faptul că indecșii din matrice nu trebuie să fie deloc scrisi atunci când inițializați matricea cu valori. Apoi creăm așa-numitul colecție-matrice(obiect de colectie):

    $student = matrice ("Ioan" , "Smith" , 20 ) ;

    $student = array("Ioan","Smith", 20);

    În acest caz, interpretul însuși le va atribui indici numerici, începând de la 0

    Exemplu conversii de tip și rescrierea elementelor.
    Observați utilizarea procedurii var_dump().

    1 2 3 4 5 6 7 8 9 "a" , "1" => "b" , 2 => "c" , 2 => "d" , ) ; var_dump ($my_array) ; ?>

    "a", "1" => "b", 2 => "c", 2 => "d",); var_dump($my_array); ?>

    Rezultat:

    Array(3) ( => string(1) "a" => string(1) "b" => string(1) "d" )

    Exemplu utilizare matrice multidimensionalăși organizarea accesului la elementele sale

    1 2 3 4 5 6 7 8 9 10 11 12 "1" , 2 => 2 , "multi" => matrice ( "1_1" => "1_1" ) ) ; var_dump($array_odnom["primul"]); var_dump($array_odnom[2]); var_dump($array_odnom["multi"]["1_1"]); ?>

    "1", 2 => 2, "multi" => matrice ("1_1" => "1_1")); var_dump($array_odnom ["primul"]); var_dump($array_odnom); var_dump($array_odnom ["multi"]["1_1"]); ?>

    Rezultat:

    String(1) „1” int(2) string(3) „1_1”

    Exemplu: creați o matrice bidimensională cu dimensiuni 3 x 2. Completați-o cu valori pentru prima linie: „1_1”, „1_2”, „1_3”; pentru a doua linie: „2_1”, „2_2”, „2_3”. Afișează primul element al unui tablou


    Performanţă:
    1 2 3 4 5 6 7 8 9 10 11 12 $array_odnom = matrice ( 1 => matrice ( 1 => "1_1" , 2 => "1_2" , 3 => "1_3" ) , 2 => matrice ( 1 => "2_1" , 2 => "2_2" , 3 => "2_3" ) , ) ; echo $array_odnom [ 1 ] [ 1 ] ;

    $array_odnom = array(1 => array(1 => "1_1", 2 => "1_2", 3 => "1_3"), 2 => array(1 => "2_1", 2 => "2_2" , 3 => "2_3")),); echo $array_odnom;

    Job php2_1: creați o matrice bidimensională 3 x 3 - colțul din stânga sus al tabelului de înmulțire pitagoreică (1, 2, 3; 4, 6, 8 ...)



    Lucrari de laborator:
    Să presupunem că aveți un fel de reclamă și mai multe persoane diferite cărora trebuie să le trimiteți această reclamă. Pentru a face acest lucru, creați un șablon cu conținutul anunțului, în interiorul căruia există o serie de parametri care se schimbă: o serie de nume de oameni și o serie de evenimente. Afișați o versiune a anunțului final pe ecran. Pentru a defini matrice, utilizați o matrice asociativă.

    Utilizați șablonul de anunț și concentrați-vă pe culori:

    Roșu – matrice.
    Maro – variabilă numerică.
    Albastru – constant.

    Dragă Ivan Ivanovici!
    Vă invităm să Zi deschisa.
    Data evenimentului: 12 mai.
    Salutări, Vasily.


    Completează codul:
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 // declarație constantă define("SEMNĂ" , „Cu stimă, Vasia”) ; // matrice pentru numele destinatarilor$nume = matrice (...) ; // matrice pentru evenimente$events = array("op_doors" => "Zi deschisa", "vistavka" => "expoziție", ... ) ; $str = „Dragi $names!
    "
    ; $str .= ...; $str .= ...; ecou...;

    // declararea unei constante define("SIGN","Regards, Vasya"); // matrice pentru numele destinatarilor $nume = matrice(...); // matrice pentru evenimente $events = array("op_doors" => "zi porți deschise", "vistavka" => "expoziție", ...); $str = "Dragi $nume!
    "; $str .= ...; $str .= ...; ecou ...;

Ultima actualizare: 1/11/2015

Matricele sunt concepute pentru a stoca seturi de date sau elemente. Fiecare element din matrice are propria sa cheie și valoare unică. Deci, să salvăm lista de modele de telefoane într-o matrice:

"; ?>

Aici este creată o matrice $phones cu patru elemente. Fiecare element din matrice reprezintă o pereche cheie-valoare. Deci, primul element $telefoane = "Nokia N9" are o cheie - numărul 0 și o valoare - șirul "Nokia N9". În astfel de matrice, tastele numerice sunt numite și indecși.

Puteți utiliza funcția count() pentru a afla numărul de elemente dintr-o matrice. Și datorită faptului că cheile sunt în ordine de la 0 la 3 și știind dimensiunea matricei, puteți afișa elementele matricei într-o buclă for.

Pentru a face mai clară relația dintre cheile și valorile elementelor, să tipărim matricea folosind funcția print_r:

Print_r($telefoane);

Vom obține următorul rezultat:

Array ( => Nokia N9 => Samsung Galaxy ACE II => Sony Xperia Z3 => Samsung Galaxy III)

Această creare de matrice ar fi, de asemenea, echivalentă cu următoarele:

"; ?>

Dacă nu este specificată o cheie de element, PHP folosește numere ca chei. În acest caz, numerotarea cheilor începe de la zero, iar fiecare cheie nouă crește cu una.

Cunoscând cheia unui element dintr-o matrice, putem accesa acest element, obținem sau modifica valoarea acestuia:

// obțineți elementul prin tasta 1 $myPhone = $telefoane; echo „$myPhone
"; // atribuirea unei noi valori $phones = "Samsung X650"; echo "$phones"
";

Dar nu numai numerele întregi, ci și șiruri pot fi folosite ca chei:

Astfel de matrice sunt de asemenea numite asociativ.

operator de matrice

O modalitate de a crea o matrice a fost discutată mai sus. Dar mai există unul, care implică utilizarea operatorului array().

Operatorul array() preia un set de elemente. Nici cheile nu sunt specificate în mod explicit aici. Prin urmare, PHP numerotează automat elementele de la zero. Dar putem specifica și o cheie pentru fiecare element:

"iPhone5", "samsumg" => "Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); echo $telefoane["samsumg"]; ?>

Operația => vă permite să mapați o cheie la o anumită valoare.

Iterarea peste tablouri asociative

Mai sus, ne-am uitat la cum să folosim o buclă for pentru a afișa toate elementele unui tablou, unde cheile sunt specificate secvenţial prin numere de la 0 la 3. Cu toate acestea, acest lucru nu funcționează cu tablourile asociative. Și pentru ei, PHP are un tip special de buclă - foreach... ca:

"iPhone5", "samsumg" => "Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); foreach($telefoane ca $articol) echo "$articol
"; ?>

Într-o buclă foreach, toate elementele sunt eliminate secvenţial din matrice, iar valoarea lor este plasată în variabila specificată după cuvântul cheie as. În acest caz, toate cele patru valori din matricea $phones sunt plasate pe rând în variabila $item. Când ultimul element din matrice este preluat, bucla se termină.

Bucla foreach vă permite să preluați nu numai valori, ci și chei de elemente:

"iPhone5", "samsumg" => "Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); foreach($telefoane ca $cheie=>$valoare) echo "$cheie => $valoare
"; ?>

Aici, la iterarea elementelor buclei, cheia elementului va fi transferată la variabila $key, iar valoarea acesteia va fi transferată la variabila $value.

O alternativă la bucla foreach este să utilizați lista și fiecare funcție:

"iPhone5", "samsumg" => "Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); while (listă($cheie, $valoare) = fiecare($telefoane)) echo "$cheie => $valoare
"; ?>

Bucla while va rula până când fiecare funcție returnează false. Fiecare funcție iterează prin toate elementele matricei $phones și o returnează ca o matrice care conține cheia și valoarea elementului. Această matrice este apoi transmisă funcției de listă, iar valorile matricei sunt atribuite variabilelor din paranteze. Când fiecare funcție a terminat de iterare prin matricea $phones, va returna false și bucla while se va termina.

Matrice multidimensionale

În exemplele anterioare, au fost luate în considerare numai tablouri unidimensionale, unde valorile elementului reprezentau numere sau șiruri. Dar în PHP, matricele pot fi și multidimensionale, adică cele în care un element al matricei este el însuși o matrice. De exemplu, să creăm o matrice multidimensională:

array("iPhone5", "iPhone5s", "iPhone6") , "samsumg"=>array("Samsung Galaxy III", "Samsung Galaxy ACE II"), "nokia" => array("Nokia N9", "Nokia Lumia 930"), "sony" => array ("Sony XPeria Z3", "Xperia Z3 Dual", "Xperia T2 Ultra")); foreach ($telefoane ca $brand => $articole) ( echo "

$brand

"; ecou"
    "; foreach ($items ca $key => $value) ( ​​​​echo "
  • $valoare
  • ";) ecou"
"; } ?>

Și la ieșire, vom obține 4 liste:

Pentru a accesa un anumit element, trebuie să specificați și cheile între paranteze drepte. De exemplu, să ne uităm la primul element din prima matrice. Deoarece cheia primului tablou este „măr”, iar cheia primului element din prima matrice este numărul 0 (din moment ce nu am specificat în mod explicit cheile):

Echo $telefoane[„măr”];

Puteți obține al doilea element al celei de-a treia matrice într-un mod similar:

Echo $telefoane["nokia"];

Să presupunem că tablourile imbricate reprezintă și tablouri asociative:

array("apple" => "iPhone5", "samsumg" => "Samsung Galaxy III", "nokia" => "Nokia N9"), "tablete" => array("lenovo" => "Lenovo IdeaTab A3500" , „samsung” => „Samsung Galaxy Tab 4”, „apple” => „Apple iPad Air”); foreach ($technics ca $tovar => $articole) ( echo "

$produs

"; ecou"
    "; foreach ($items ca $key => $value) ( ​​​​echo "
  • $key: $value
  • ";) ecou"
"; ) // atribuie o valoare diferită unuia dintre elementele $technics["phones"]["nokia"] = "Nokia Lumnia 930"; // afișează această valoare echo $technics["phones"]["nokia" ];

1. Ce este o matrice PHP?
2. Exemplu de matrice PHP?
3. Matrice unidimensională (vector)
- index
- asociativ
4. Matrice bidimensională (matrice într-o matrice, matrice)
5. Funcții pentru lucrul cu matrice (matrice într-o matrice, matrice)

Aș dori să încep acest subiect cu exemple renunțate. Să presupunem că luăm în considerare unele persoană. El are prenume, prenume, adresă, număr de telefon, sex, înălțime, culoarea ochilorși așa mai departe. Informațiile despre toate aceste puncte pot fi atribuite unei serii de date despre o persoană.

Matricea poate fi de alt tip, fără specificații asupra articolelor. Va fi doar un subiect. Să spunem asta programare web. Și elementele vor fi limbi - HTML, CSS, JavaScript, PHP, MySQL. Sunt 5 elemente în total.

Pe baza ultimului exemplu, să presupunem o matrice:

programare web
1. HTML
2.CSS
3. JavaScript
4.PHP
5. MySQL

Acum priviți acest exemplu și analizați conceptele de bază.

Matrice în PHP este un ansamblu de date situate secvențial de același tip, legate de o temă comună, al căror număr de elemente este fix.

Matricea din acest exemplu va fi apelată programare web.

Fiecare element are propriul său loc ordinal, identificator.
Index(cheie matrice) - fie un număr de secvență, fie o valoare text prin care elementul poate fi identificat.

Indicii din exemplul de mai sus ar fi valoare numerică de la 1 la 5. Când accesăm indexul 2 vom vedea CSS-ul.

Exemplu de matrice în PHP

Acum să ne uităm la exemplul de mai sus în sintaxa PHP, nu în rusă. Să presupunem că matricea va fi numită mai scurtă - web. Parantezele pătrate vor introduce un index.

Să ne uităm la un exemplu simplu de matrice, în care valorile indexului vor conține valori numerice și vom crea matricea ca și cum am atribui valori variabilelor.

$web='HTML';
$web='CSS';
$web='JavaScript';
$web='PHP';
$web='MySQL';

$web; // această variabilă conține o matrice cu 5 elemente

// pentru a afișa unul dintre elementele matricei, trebuie doar să specificați indexul din matrice
echo $web; // iese PHP

Matrice unidimensională

INDEX ARRAY

Mai sus, cu programarea web, ne-am uitat doar la un exemplu de matrice unidimensională.
Rareori este creat astfel. Acesta arată mai degrabă vizual structura matricei. Mai des recurg la o altă metodă.

$web=array('HTML','CSS','JavaScript','PHP','MySQL');
echo $web; // va scoate „HTML”
echo $web; // va scoate „JavaScript”
echo $web; // va tipări „PHP”

Dacă doriți să setați valori de index, trebuie să le specificați după cum urmează. Semn => este un pointer pentru atribuirea unui index unei valori, sau invers unei valori index.

$web=array(1=>’HTML’,2=>’CSS’,3=>’JavaScript’,4=>’PHP’,5=>’MySQL’);
echo $web; // HTML
echo $web; // CSS
echo $web; //PHP
În exemplu, numărarea începe de la 1. Variabila cu indicele 0 este așadar goală.

În exemplul următor nu vom specifica un index.

$day='luni'; // index 0
$day='Marți'; // 1
$day='Miercuri'; // 2
$day='Joi'; // 3
$day='vineri'; // 4
Puteți vedea că umplerea secvențială are loc de la zero.

MATRICUL ASOCIATIV

Adesea este nevoie de a crea un index de litere pentru un element de matrice. După cum am menționat mai sus, un astfel de index trebuie să fie format din litere latine, iar numele trebuie să fie cuprins între ghilimele. Să ne uităm la exemplul unei persoane.

$user[‘nick’]=’Logic’;
$user[‘name’]=’Pavel’;
$user[‘varsta’]=’25’;
$user[‘sex’]=’Bărbat’;

$utilizator; // variabila $user contine un tablou cu 4 elemente cu indici de litere

// afișează elementul de matrice, indicând indexul literelor sale
echo $web['nume']; // va tipări „Pavel”
După cum puteți vedea, totul este destul de simplu. Numai valoarea indicelui este cotată.

Matrice bidimensională

Dacă ați ratat prima parte cu One-Dimensional Array, vă sfătuiesc insistent să o citiți.
Pentru a spune simplu, este o matrice într-o matrice. Adică, elementele unei matrice mari sunt diferite. Astfel de matrice încetinesc foarte mult munca scriptului, încărcând RAM, astfel încât pentru a procesa rapid astfel de grupuri de date, au fost create baze de date (Ce este o bază de date?), dar mai multe despre asta mai târziu. Să ne uităm la un exemplu de matrice bidimensională.

// matrice cu nume de părți ale lumii
$m = array('Europa','Asia','Africa','America','Australia si Oceania');

// matrice cu numele Țărilor
$s = array('Rusia','Ucraina','Belarus','Kazahstan');

// matrice cu nume de majuscule
$с = array('Moscova','Kiev','Minsk','Astana');

// creează o matrice bidimensională Geography
$geografie = matrice($m, $s, $c);
?>
Matricele incluse, după cum ați observat, pot avea un număr diferit de elemente. Din partea despre tablourile unidimensionale rezultă că fiecare element al matricei poate avea un index. Deci, să atribuim o valoare diferită fiecărui tablou inclus.

Pentru a face acest lucru, extindeți ultima linie și scrieți-o după cum urmează.

$geography = array('Parți ale lumii'=>$m, 'Țări'=>$s, 'Capitale'=>$s);

Funcții pentru lucrul cu matrice php

Pentru fiecare este o funcție ciclică pentru lucrul cu matrice, în care numărul de cicluri este egal cu numărul de elemente ale matricei.

Arata cam asa:

Cod PHP

foreach (matrice ca $key=>$value)
echipe;
Ei bine, imediat un exemplu de muncă

// creează o matrice cu faimosul IT
$names["Ritchie"] = "Dennis";
$names["Thompson"] = "Ken";
$names["Gates"] = "Factură";
$names["Jobs"] = "Steve";

foreach ($names ca $key => $value) (
echo "$valoare $cheie";
}
?>
Scriptul se va afișa pe ecran

Dennis Ritchie
Ken Thompson
Bill Gates
Steve Jobs
Numara— o funcție care returnează numărul de elemente din matrice.

ecou count($nume); // în exemplul nostru cu IT va returna valoarea 4
Fel— o funcție care sortează elementele matricei. Convenabil pentru valorile indexului numeric.
Arsort este o funcție care sortează elementele matricei în ordine inversă.

sortare($nume); // sortează în ordine. Este convenabil dacă există numere în Index
arsort($nume); // sortează în ordine inversă. Adică prin indici elementele vor fi în ordinea 3, 2, 1, 0
Dezactivat este o funcție care elimină un element de matrice.

unset($array); // elimină elementul de matrice cu indexul 2
unset($array); // ștergerea întregului tablou
Array_search— funcția de căutare într-o matrice.

Lecția 7. Matrice în PHP

Are două argumente. Mai simplu spus, are array_search('ce', unde)

$animals=’câine’;
$animals='pisica';
$animals='pasare';
echo array_search('pisica',$animale); // va afișa indexul elementului - numărul 2
Amesteca este o funcție care amestecă cheile valorilor matricei.

amestecare($animale); // aranjează elementele în ordine aleatorie
Vă mulțumim pentru atenție!

Articolul anterior
Lecția 6. Bucle în PHP Articolul următor
Lecția 8. Includerea unui fișier în PHP. Includeți și solicitați

Comentarii la articol (vk.com)

Creează o matrice goală.

Puteți arunca valorile într-o matrice mai târziu, astfel:

În prezent, $myArray conține „copac”, „casă” și „câine”. Fiecare dintre comenzile de mai sus se adaugă la matrice, păstrând elementele care erau deja acolo.

Venind din alte limbi, acest mod de a adăuga o matrice mi s-a părut ciudat. Mă așteptam să fac ceva de genul $myArray+="dog" sau ceva de genul...

sau poate o metodă „add()” precum colecțiile Visual Basic. Dar această sintaxă de atașare directă este scurtă și convenabilă.

De fapt, ar trebui să utilizați funcția unset() pentru a elimina elemente:

... va elimina "casa" din matrice (matricele sunt bazate pe nul).

Bazele lucrului cu matrice în PHP

...va distruge întreaga matrice.

Pentru a fi clar, sintaxa pentru paranteze pătrate goale pentru adăugarea la o matrice este pur și simplu o modalitate de a-i spune PHP să atribuie automat indici fiecărei valori, mai degrabă decât să atribuie indici. Acoperiri, PHP face de fapt asta:

Puteți atribui singuri indici dacă doriți și puteți utiliza orice numere doriți. De asemenea, puteți atribui numere de index unor elemente și nu altora. Dacă faceți acest lucru, PHP va completa numerele de index lipsă, crescând de la cel mai mare număr de index atribuit pe măsură ce sosește.

Deci, dacă faci asta:

... elementului „câine” i se va atribui numărul de index 21. PHP nu face potrivire inteligentă a modelelor pentru a atribui indicii unul câte unul, așa că nu va ști că ați putea dori să atribuiți numărul de index 30 „câine”. Puteți utiliza alte funcții pentru a specifica modelul de increment pentru o matrice. Nu voi intra în el, dar totul este în documentele PHP.

În unele alte limbi (de exemplu, AS3) s-a remarcat că inițializarea unei noi matrice este mai rapidă dacă este făcută mai degrabă decât în ​​scopul creării și instanțierii obiectelor. Mă întreb dacă există echivalențe în PHP?

Matrice în PHP. Lucrul cu matrice în PHP.

Acest articol acoperă lucrul cu matrice în PHP (noțiuni de bază). Matricele în PHP sunt un tip de date care vă permite să stocați mai multe variabile într-una singură.

Iată un exemplu simplu:

În exemplul de mai sus, $products este o matrice în care am stocat mai multe produse diferite. În continuare, am derivat toate aceste produse, accesând fiecare prin „indexuri” (chei): 0, 1 și 2.

Desigur, valorile individuale pot fi stocate și în variabile separate, de exemplu, astfel:

Acest lucru este, desigur, bun, dar să ne imaginăm că a trebuit brusc să trecem prin toate aceste elemente. Cum putem fi aici? Scrieți codul pentru fiecare variabilă? Este lung și incomod. Soluția este să folosești matrice.
Folosind bucle, putem accesa următorul element la fiecare iterație (pas), datorită indicilor (tastelor).

Crearea unui tablou în PHP.

Nu este nevoie să declarați o matrice în PHP. Putem crea o matrice folosind funcția array():

În acest caz, am creat o matrice goală. Dacă specificăm mai multe valori între paranteze separate prin virgule, atunci vom completa această matrice cu mai multe elemente:

Tipuri de matrice.

1. Matrice „indexate” sau „matrice automate”. Am dat deja exemple de astfel de matrice mai sus. O caracteristică specială a acestor tablouri este că au indici numerici care sunt creați automat („din zbor”). Numerotarea elementelor începe de la 0.

Cum se determină lungimea (dimensiunea) unui tablou indexat.

Utilizarea Arrays

Folosind funcția numara():

Enumerarea elementelor. Puteți enumera toate elementele unei matrice automate folosind construcția pentru sau pentru fiecare:

Pentru a adăuga un nou element în matrice (scrieți în matrice), trebuie doar să executăm următoarea linie:

Iterarea peste toate elementele unui tablou asociativ se efectuează după cum urmează:

3. Matricele multidimensionale conțin alte matrice ca elemente:

De asemenea, putem crea o matrice tridimensională:

scoaterea unui tablou în PHP. Puteți afișa orice matrice folosind funcția print_r(), De exemplu:

Cu toate acestea, atunci când un element este șters, indicii altor elemente rămân neschimbați.

Funcții pentru lucrul cu matrice:

Sortare Arrays
array_search – caută o valoare într-o matrice

(matrice în matrice, matrice)
5. Funcții pentru lucrul cu matrice (matrice într-o matrice, matrice)

Ce este o matrice PHP?

Aș dori să încep acest subiect cu exemple renunțate. Să presupunem că luăm în considerare unele persoană. El are prenume, prenume, adresă, număr de telefon, sex, înălțime, culoarea ochilorși așa mai departe. Informațiile despre toate aceste puncte pot fi atribuite unei serii de date despre o persoană.

Matricea poate fi de alt tip, fără specificații asupra articolelor. Va fi doar un subiect. Să spunem asta programare web. Și elementele vor fi limbi - HTML, CSS, JavaScript, PHP, MySQL. Sunt 5 elemente în total.

Pe baza ultimului exemplu, să presupunem o matrice:

programare web
1. HTML
2.CSS
3. JavaScript
4.PHP
5. MySQL

Acum priviți acest exemplu și analizați conceptele de bază.

Matrice în PHP este un ansamblu de date situate secvențial de același tip, legate de o temă comună, al căror număr de elemente este fix.

Matricea din acest exemplu va fi apelată programare web.

Fiecare element are propriul său loc ordinal, identificator.
Index(cheie matrice) - fie un număr de secvență, fie o valoare text prin care poate fi identificat un element.

Indicii din exemplul de mai sus ar fi valoare numerică de la 1 la 5. Când accesăm indexul 2 vom vedea CSS-ul.

Exemplu de matrice în PHP

Acum să ne uităm la exemplul de mai sus în sintaxa PHP, nu rusă. Să presupunem că matricea va fi numită mai scurtă - web. Parantezele pătrate vor introduce un index.
Să ne uităm la un exemplu simplu de matrice, în care valorile indexului vor conține valori numerice și vom crea matricea ca și cum am atribui valori variabilelor.

$web="HTML";
$web="CSS";
$web="JavaScript";
$web="PHP";
$web="MySQL";

$web; // această variabilă conține o matrice cu 5 elemente

// pentru a afișa unul dintre elementele matricei, trebuie doar să specificați indexul din matrice
echo $web; // iese PHP

Matrice unidimensională

INDEX ARRAY

Mai sus, cu programarea web, ne-am uitat doar la un exemplu de matrice unidimensională.
Rareori este creat astfel. Acesta arată mai degrabă vizual structura matricei. Mai des recurg la o altă metodă.

$web=array("HTML","CSS","JavaScript","PHP","MySQL");
echo $web; // va scoate „HTML”
echo $web; // va scoate „JavaScript”
echo $web; // va imprima "PHP"

Dacă doriți să setați valori de index, trebuie să le specificați după cum urmează. Semn => este un pointer pentru atribuirea unui index unei valori, sau invers unei valori index.

$web=array(1=>"HTML",2=>"CSS",3=>"JavaScript",4=>"PHP",5=>"MySQL");
echo $web; // HTML
echo $web; // CSS
echo $web; //PHP
În exemplu, numărarea începe de la 1. Variabila cu indicele 0 este așadar goală.

În exemplul următor nu vom specifica un index.

$day="luni"; // index 0
$day="Marți"; // 1
$day="miercuri"; // 2
$day="Joi"; // 3
$day="vineri"; // 4
Puteți vedea că umplerea secvențială are loc de la zero.

MATRICUL ASOCIATIV

Adesea este nevoie de a crea un index de litere pentru un element de matrice. După cum am menționat mai sus, un astfel de index trebuie să fie format din litere latine, iar numele trebuie să fie cuprins între ghilimele. Să ne uităm la exemplul unei persoane.

$user["nick"]="Logica";
$user["name"]="Pavel";
$user["age"]="25";
$user["sex"]="Bărbat";

$utilizator; // variabila $user contine un tablou cu 4 elemente cu indici de litere

// afișează elementul de matrice, indicând indexul literelor sale
echo $web[„nume”]; // va imprima "Pavel"
După cum puteți vedea, totul este destul de simplu. Numai valoarea indicelui este cotată.

Matrice bidimensională

Dacă ați ratat prima parte cu o matrice One-Dimensional, vă sfătuiesc cu căldură să o citiți.
Pentru a spune simplu, este o matrice într-o matrice. Adică, elementele unei matrice mari sunt diferite. Astfel de matrice încetinesc foarte mult munca scriptului, încărcând RAM, astfel încât pentru a procesa rapid astfel de grupuri de date, au fost create baze de date (Ce este o bază de date?), dar mai multe despre asta mai târziu. Să ne uităm la un exemplu de matrice bidimensională.

// matrice cu nume de părți ale lumii
$m = matrice("Europa","Asia","Africa","America","Australia si Oceania");

// matrice cu numele Țărilor
$s = array("Rusia","Ucraina","Belarus","Kazahstan");

// matrice cu nume de majuscule
$с = matrice("Moscova","Kiev","Minsk","Astana");

// creează o matrice bidimensională Geography
$geografie = matrice($m, $s, $c);
?>
Matricele incluse, după cum ați observat, pot avea un număr diferit de elemente. Din partea despre tablourile unidimensionale rezultă că fiecare element al matricei poate avea un index. Deci, să atribuim o valoare diferită fiecărui tablou inclus.

Pentru a face acest lucru, extindeți ultima linie și scrieți-o după cum urmează.

$geografie = array("Părți ale lumii"=>$m, "Țări"=>$s, "Capitale"=>$s);

Funcții pentru lucrul cu matrice php

Pentru fiecare- o funcție ciclică pentru lucrul cu matrice, în care numărul de cicluri este egal cu numărul de elemente ale matricei.

Arata cam asa: Cod PHP

Foreach (matrice ca $key=>$value)
echipe;
Ei bine, imediat un exemplu de muncă

// creează o matrice cu faimosul IT
$names["Ritchie"] = "Dennis";
$names["Thompson"] = "Ken";
$names["Gates"] = "Factură";
$names["Jobs"] = "Steve";

Foreach ($names ca $key => $value) (
echo "$valoare $cheie";
}
?>
Scriptul se va afișa pe ecran

Dennis Ritchie
Ken Thompson
Bill Gates
Steve Jobs
Numara- o funcție care returnează numărul de elemente din matrice.

Număr de ecouri ($nume); // în exemplul nostru cu IT va returna valoarea 4
Fel- o funcție care sortează elementele matricei. Convenabil pentru valorile indexului numeric.
Arsort- o funcție care sortează elementele matricei în ordine inversă.

Sort($nume); // sortează în ordine. Este convenabil dacă există numere în Index
arsort($nume); // sortează în ordine inversă. Adică prin indici elementele vor fi în ordinea 3, 2, 1, 0
Dezactivat- o funcție care elimină un element de matrice.

Unset($array); // elimină elementul de matrice cu indexul 2
unset($array); // ștergerea întregului tablou
Array_search- funcția de căutare într-o matrice. Are două argumente. Mai simplu spus, are array_search ("ce", unde)

$animals="câine";
$animals="pisică";
$animals="pasăre";
echo array_search("pisica",$animale); // va afișa indexul elementului - numărul 2
Amesteca- o funcție care amestecă cheile valorilor matricei.

Amestecare($animale); // aranjează elementele în ordine aleatorie
Vă mulțumim pentru atenție!

Adesea trebuie să iterați prin toate elementele unei matrice PHP și să efectuați o operațiune pe fiecare element. De exemplu, puteți scoate fiecare valoare într-un tabel HTML sau puteți da fiecărui element o nouă valoare.

În această lecție ne vom uita la constructul foreach atunci când organizăm o buclă peste matrice indexate și asociate.

Buclă prin valorile elementelor

Cel mai simplu caz de utilizare pentru foreach este să faci bucla prin valori într-o matrice indexată. Sintaxa de baza:

Foreach ($array ca $valoare) ( ​​// Faceți ceva cu $valoare ) // Aici codul este executat după finalizarea buclei

De exemplu, următorul script iterează prin lista de directori dintr-o matrice indexată și tipărește numele fiecăruia:

$directori = array("Alfred Hitchcock", "Stanley Kubrick", "Martin Scorsese", "Fritz Lang"); foreach ($directori ca $director) ( echo $director . "
"; }

Codul de mai sus va scoate:

Alfred Hitchcock Stanley Kubrick Martin Scorsese Fritz Lang

Bucla cheie-valoare

Dar matricele asociate? Când utilizați acest tip de matrice, deseori trebuie să aveți acces la cheia fiecărui element, precum și la valoarea acestuia. Construcția foreach are o modalitate de a rezolva problema:

Foreach ($array ca $key => $value) ( ​​​​// Faceți ceva cu $key și/sau $value ) // Aici codul este executat după finalizarea buclei

Un exemplu de organizare a unei bucle printr-o matrice asociată cu informații despre filme, afișând cheia fiecărui element și valoarea acestuia în lista HTML de definiții:

$movie = array("title" => "Luneta", "director" => "Alfred Hitchcock", "an" => 1954, "minute" => 112); ecou"

"; foreach ($movie ca $key => $value) ( ​​​​echo "
$key:
"; ecou"
$valoare
";) ecou"
";

Când este executat, acest script va afișa:

Titlu: Geam regizor: Alfred Hitchcock Anul: 1954 minute: 112

Modificarea valorii unui element

Ce zici de schimbarea valorii unui element pe măsură ce trece bucla? Puteți încerca acest cod:

Foreach ($myArray ca $valoare) ( ​​$value = 123; )

Cu toate acestea, dacă îl rulați, veți descoperi că valorile din matrice nu schimba. Motivul este că foreach funcționează cu o copie valorile matricei, nu cu originalul. În acest fel, matricea originală rămâne intactă.

Pentru a schimba valorile matricei aveți nevoie legătură la sens. Pentru a face acest lucru, trebuie să puneți un semn & în fața variabilei valoare în constructul foreach:

Foreach ($myArray ca &$valoare) ( ​​$value = 123; )

De exemplu, următorul script parcurge fiecare element (numele directorului) din matricea $directors și folosește funcția PHP explode() și construcția listă pentru a schimba numele și numele:

$directori = array("Alfred Hitchcock", "Stanley Kubrick", "Martin Scorsese", "Fritz Lang"); // Schimbați formatul numelui pentru fiecare element pentru fiecare ($directori ca &$director) ( list($firstName, $lastName) = explode(" ", $director); $director = "$lastName, $firstName"; ) unset ( $director); // Imprimă rezultatul final pentru fiecare ($directori ca $director) ( echo $director . "
"; }

Scriptul va scoate:

Hitchcock, Alfred Kubrick, Stanley Scorsese, Martin Lang, Fritz

Rețineți că scriptul apelează funcția unset() pentru a elimina variabila $director după terminarea primei bucle. Aceasta este o practică bună dacă intenționați să utilizați variabila mai târziu în script într-un context diferit.

Dacă nu eliminați referința, riscați să executați în continuare cod care face referire accidentală la ultimul element din matrice ("Lang, Fritz") dacă continuați să utilizați variabila $director, ceea ce va duce la consecințe nedorite!

rezumat

În acest tutorial, ne-am uitat la cum să folosim construcția PHP foreach pentru a parcurge elementele unui tablou. Au fost luate în considerare următoarele aspecte:

  • Cum să parcurgeți elementele matricei
  • Cum se accesează cheia și valoarea fiecărui element
  • Cum să utilizați o referință pentru a schimba valorile pe măsură ce treceți printr-o buclă