Matrice în PHP. Învățare tablouri în PHP PHP matrice multidimensionale cu index numeric

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"); // Începând de la versiuni PHP 5.4 $fructe = 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 [ 3 ] = „caisă” ; .$fructe[0]. "
    " ;

    "; ecou
    „Al doilea element al matricei este „
    .
    ";

    $fructe[1]. "

    „Al treilea element al matricei este „. $fructe[2]. ")

    $fructe="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:

    „Al treilea element al matricei este „ 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:

    Î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) ;

    Să ne uităm la un exemplu:

    ?>

    Exemplu"a", "1" => "b", 2 => "c", 2 => "d",); var_dump($my_array); ?> Array(3) ( => string(1) "a" => string(1) "b" => string(1) "d" ) utilizare

    1 2 3 4 5 6 7 8 9 10 11 12 matrice multidimensională

    și organizarea accesului la elementele sale

    Să ne uităm la un exemplu:

    "1" , 2 => 2 , "multi" => matrice ( "1_1" => "1_1" ) ) ;

    "; echo "Al doilea element al matricei este ". $fruits ." var_dump($array_odnom["primul"]);


    var_dump($array_odnom[2]);
    1 2 3 4 5 6 7 8 9 10 11 12 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"]); ?> String(1) „1” int(2) string(3) „1_1”



    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
    Execuţie:

    $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.
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 Dragă Ivan Ivanovici! Vă invităm să zi) ; ușile deschise Data evenimentului: 12 mai. Salutări, Vasily. Completează codul: // declarație constantă define("SEMNĂ" , „Cu stimă, Vasia”
    "
    // matrice pentru numele destinatarilor

    // 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 ...;

În acest articol, continuăm să învățăm elementele de bază ale PHP și să fim introduși în matrice. Separat, folosind exemple, ne vom uita la crearea unui tablou obișnuit, apoi vom trece fără probleme la tablouri asociative și multidimensionale. Materialul prezentat va fi suficient pentru a înțelege cu fermitate următoarea parte. Bazele PHP, și anume matrice PHP.

Matrice PHP – Ce sunt matricele PHP și cum sunt create. Matrice simple (index).

Matricele în PHP joacă un rol foarte important și sunt utilizate pe scară largă la construirea site-urilor web. O matrice este o așa-numită variabilă (), care poate conține mai multe valori disponibile la anumiți indecși. Pentru a accesa informațiile despre matrice, trebuie doar să specificați numele matricei și indexul celulei de date. Pentru claritate, voi da un exemplu de structură a unui tablou de index simplu și a unei variabile.

După cum puteți vedea din imagine, diferența dintre o matrice și o variabilă nu este foarte mare. O variabilă poate lua o singură valoare, dar o matrice poate avea mai multe valori simultan. Mai mult, pentru a extrage informații dintr-o matrice, este suficient să indicați pur și simplu numele matricei și indexul pentru care sunt disponibile informațiile. Pentru o înțelegere mai completă, să ne uităm la un exemplu și să creăm o matrice, apoi să extragem informații din acesta și să le afișăm pe ecran.

/*Crearea unui tablou*/ $name = "A"; $nume = "B"; $nume = "C"; $nume = "D"; $nume = "E"; /*Trimit valoarea celulei matricei cu indexul 2 pe ecran*/ echo $nume;

În exemplul de mai sus, putem vedea că mai întâi creăm primul element al matricei cu indicele „0” și îi atribuim valoarea „A”. Apoi creăm restul de 4 elemente ale matricei în același mod. După aceasta, folosind operator ecou afișăm pe ecran al treilea element al matricei. După cum ați observat deja, pentru a afișa un element de matrice pe ecran, trebuie să specificați numele matricei și indexul celulei cu datele.

Pe lângă metoda de mai sus, o matrice în PHP poate fi creată într-un alt mod. Esența sa este de a folosi cuvânt cheie matrice. Pentru claritate, să ne uităm la același exemplu de creare a unei matrice, dar într-un mod diferit.

$nume = matrice (0 => "A", 1 => "B", 2 => "C", 3 => "D", 4 => "E");

Această metodă este, de asemenea, foarte simplă. Pentru a crea o matrice, creăm o variabilă $name, apoi punem un semn de atribuire „=" și indicăm că este o matrice. După aceea, creăm celule și le umplem cu date. Acest lucru se face prin specificarea unui index și atribuirea unei valori acestuia folosind semnele „=” și „>”. Adică, „0 => „A”” înseamnă că atribuim valoarea „A” celulei cu indicele „0”. Este puțin ciudat să explici acest subiect în text, dar cred că înțelegi despre ce vorbim.

De asemenea, aș dori să notez imediat că, dacă indexul primului element din matricea creată este zero, atunci indicii nu trebuie introduși. În acest caz, PHP va adăuga indici automat începând de la zero. Toate acestea vor arăta așa.

Prima opțiune pentru crearea de matrice în PHP

$nume = "A"; $nume = "B"; $nume = "C"; $nume = "D"; $nume = "E";

A doua opțiune pentru crearea de matrice în PHP

$nume = matrice ("A", "B", "C", "D", "E");

Matrice asociative PHP

Matricele asociative sunt un alt tip de matrice PHP. Diferența dintre tablourile asociative și tablourile simple sunt indecși. Dacă în tablourile simple aceștia erau indici numerici, atunci în tablourile asociative acești indici sunt text. Acest lucru face ca tablourile asociative să fie mai organizate și mai semnificative. Datorită acestui fapt, ele sunt mai utilizate pe scară largă decât cele index simple.

Matricele asociative sunt create într-un mod similar. Să luăm în considerare 2 metode principale.

Prima modalitate de a crea un tablou asociativ.

$color["white"] = "alb"; $color["black"] = "negru"; $color["red"] = "rosu"; $color["green"] = "verde"; $color["blue"] = "albastru";

A doua modalitate de a crea o matrice asociativă.

$culoare = matrice("alb" => "alb", "negru" => "negru", "rosu" => "rosu", "verde" => "verde", "albastru" => "albastru") ;

După cum puteți vedea, procedura de creare a unui tablou asociativ este identică cu procedura de creare a unui index. Pentru a afișa un element de matrice pe ecran, putem folosi . Să luăm în considerare două metode - cea obișnuită și utilizarea andocării variabile.

Echo „Culoare selectată - $culoare”; echo „Este selectată culoarea „.$culoare[„roșu”].”;

După cum ați observat deja, în primul caz indexul celulei nu este luat în considerare ghilimele duble. Această regulă trebuie reținută imediat pentru a evita greșelile în viitor. Dacă utilizați prima metodă și doriți să afișați un element de matrice fără a asocia variabile, atunci indexul nu este citat. În al doilea exemplu, după cum puteți vedea, totul este scris ca de obicei și ghilimele nu sunt eliminate.

Personal, îmi place mai mult prima metodă, deoarece, după părerea mea, este mult mai simplă decât a doua și necesită mai puțini pași de implementat. Totuși, depinde de tine să alegi ce metodă vei folosi.

Acum să trecem la ultima parte a articolului și să ne uităm la matricele multidimensionale PHP.

Matrice multidimensionale PHP

O matrice multidimensională este o matrice care conține o altă matrice. Pentru claritate, să implementăm o matrice multidimensională folosind trei tipuri de computere ca exemplu. În cazul nostru este computer desktop, laptop si netbook. Caracteristicile vor fi volumul RAM, volum hard diskși frecvența procesorului. Schematic multidimensional matrice PHP pentru a rezolva această problemă poate arăta așa.

Puteți crea o matrice multidimensională, ca toate celelalte, în mai multe moduri. Pentru a economisi timp, vom lua în considerare doar a doua metodă. Cred că ați memorat deja cum sunt create matricele în PHP și nu ar trebui să aveți probleme cu el.

$massiv["Desktop PC"] = matrice ("RAM" => "4096", "HDD" => "500", "GC" => "3"); $massiv["Laptop"] = matrice ("RAM" => "3072", "HDD" => "320", "GC" => "2"); $massiv["Netbook"] = matrice ("RAM" => "2048", "HDD" => "250", "GC" => "1.6");

Pentru a afișa pe ecran un element al unui tablou multidimensional în PHP, este suficient să folosiți operatorul de ieșire echo și metoda de andocare variabilă, deoarece în caz contrar (fără andocare variabilă) elementul matricei multidimensionale nu va fi afișat pe ecran. Aceasta este o altă diferență atunci când lucrați cu matrice multidimensionale PHP.

Echo „Un PC desktop cu capacitate RAM „.$massiv[”Desktop PC”][”RAM”].” și capacitate hard disk „.$massiv[”Desktop PC”][”HDD”].” are o frecvență de procesor din " . $massiv["Desktop PC"]["GC"]. „GC.”;

Acum hai hai sa rezumam toate cele de mai sus.

În acest articol, ne-am uitat la trei tipuri de tablouri - index, asociativ și multidimensional. Am învățat cum să creăm matrice în PHP, precum și cum să extragem un element de matrice și să îl afișam pe ecran. Au fost abordate elementele de bază ale lucrului cu matrice, precum și câteva reguli pentru afișarea elementelor pe ecran.

Aceasta încheie acest articol. Daca nu vrei sa ratezi ultimele actualizări blog, vă puteți abona la newsletter în orice mod convenabil pentru dvs. în secțiunea „” sau puteți utiliza formularul de mai jos.

Asta e tot. Mult succes si ne vedem in curand pe paginile blogului

În acest scurt articol vom analiza mai multe moduri de a lucra cu matrice. Este de remarcat faptul că acesta este unul dintre cele mai importante tipuri de date și limbi moderne Este greu să-ți imaginezi programarea fără ele. Ce este o matrice?
Un tablou este un set structurat de date.
Prin structura lor se poate determina acest lucru matrice simplă sau asociativ. Este imposibil să spunem cu siguranță care dintre ele este mai bună, pentru că... Un tip sau altul ar trebui folosit în funcție de situație.

Cum se creează o matrice simplă în PHP

Iată cum arată o matrice simplă:

Aș vrea să vă atrag imediat atenția asupra datelor (da, le-am notat așa intenționat :)). Tipul de date șir sau $fructe[2]. " scrieți întotdeauna între ghilimele, nu contează care dintre ele, atât cele simple, cât și cele duble vor funcționa (principalul este că rândul începe și se termină cu același ghilime). Numărul 29 are un tip întreg, sau număr - ghilimele nu sunt necesare pentru aceste tipuri de date.
Să verificăm cum arată matricea $my_array:

"; print_r($my_array); echo""; /* obține Array ( => Chair => Cloud => 29) */ ?>

Așa arată o matrice simplă.
0,1,2 — indexurile matricei noastre. Cu ajutorul indicilor putem deduce ceva specific dintr-o matrice.

De asemenea, putem crea aceeași matrice dacă scriem:

Și, există o a treia cale:

„Scaun”, 1 => „Nor”, 2 => 29);?>

Si al patrulea :)

indicii vor fi completați de la 0.

PHP ce este un tablou asociativ

Ne-am dat deja seama ce este o matrice simplă. O matrice asociativă este diferită prin aceea cheile sunt folosite în loc de indecși. Adică, nu vom mai folosi 0,1 sau 2 pentru a accesa valori. Să scriem tabloul nostru simplu ca asociativ:

Scaun => Cloud => 29) */ ?>

Și pentru a suna vom folosi

În loc de numărul ( index) setăm un nume (asociere) semnificativ și indexul nostru poate fi acum apelat cheie matrice(articol, cer, număr). Cea mai populară și, probabil, cea mai convenabilă notație pentru o matrice asociativă:

„Scaun”, „cer” => „Nor”, „număr” => 29); ?>

Matrice multidimensională

Câteva cuvinte despre acest gigant :)

matrice ("culoare" => "rosu", "an" => "2010", "mark" => "M5"), "audi" => matrice ("culoare" => "negru", "an" = > "2011", "mark" => "TT")); print_r($auto); // ieșire matrice echo $auto["bmw"]["mark"]; // M5 ?>

După cum înțelegeți, în loc de o valoare care înainte era un șir sau un număr, acum există un tip de date, cum ar fi o matrice ( Îți voi face o matrice într-o matrice, astfel încât atunci când apelezi matricea să existe o altă matrice :)).

Matrice asociative

Matricele simple folosesc chei doar pentru a separa elementele și nu au valoare practică:

În tablourile asociative, cheile descriu ce fel de valoare conțin - vârstă, nume etc.:

„Vladimir”, „vârsta” => 20]; ?>

Matrice bidimensionale și multidimensionale

Până acum ne-am ocupat doar de matrice unidimensionale, dar putem crea și o matrice bidimensională sau orice matrice multidimensională:

„Vasya”];

$human["mâini"] = ["stânga", "dreapta"];

print_r($uman); ?>

După cum puteți vedea, am creat o matrice $human și apoi în interiorul acesteia am creat un alt tablou $human["hands"] . Rezultat în browser:

Matrice ( => Vasya => Matrice ( => stânga => dreapta))

Putem crea matrice multidimensionale de orice imbricare. Ieșirea unei astfel de matrice arată astfel:

Aplicarea practică a tablourilor multidimensionale Vă amintiți că în lecția anterioară am vrut să grupăm produsele și caracteristicile acestora? Permiteți-mi să vă reamintesc codul pe care l-am primit: Samsung Galaxy"; $product2_price = 5000; $product2_cantity = adevărat; $product3_name = "

Nokia Lumia

"; $produs3_preț = 4000; $produs3_cantitate = adevărat; ?>

Acum putem pune toate aceste informații într-o singură variabilă. În acest caz, fiecare produs va fi o matrice asociativă, iar toate produsele vor fi localizate într-o matrice simplă:

„iPhone”, „preț” => 5000, „cantitate” => adevărat ], [ „nume” => „Samsung Galaxy”, „preț” => 5000, „cantitate” => adevărat ], [ „nume” = > „Nokia Lumia”, „preț” => 4000, „cantitate” => adevărat ] ]; ?>

Sau alternativ:

„iPhone”, „preț” => 5000, „cantitate” => adevărat ];

$produse = [ "name" => "Samsung Galaxy", "price" => 5000, "quantity" => true ];

$produse = [ "name" => "Nokia Lumia", "price" => 4000, "quantity" => true ]; ?>

Rezultatul ambelor variante va fi:

Array ( => Array ( => iPhone => 5000 => 1) => Array ( => Samsung Galaxy => 5000 => 1) => Array ( => Nokia Lumia => 4000 => 1))

1. Creați o matrice $city , adăugați cheia de nume cu orice valoare. 2. Creați un subbaraj de străzi cu orice străzi aleatorii. Fiecare stradă trebuie să aibă un nume (nume) și un număr de case (buildings_count), precum și o subserie de numere de case (old_buildings) pentru a fi demolată.

O zi bună, habrazhiteliki!

Dar dacă avem o matrice n-dimensională? De exemplu, cinci dimensiuni:

$matrice = matrice("dimensiune1" => matrice("dimensiune2" => matrice("dimensiune3" => matrice("dimensiune4" => matrice("dimensiune5" => matrice("valoare1" => "Hei! I\ "m value1", "value2" => "Hei! I\"m value2"))))));

Pentru a obține valoarea după cheie, de exemplu, „valoare1”, trebuie să scriem următorul cod:

Echo $array["dimensiunea1"]["dimensiunea2"]["dimension3"]["dimension4"]["dimension5"]["valoarea1"]; // Hei! Sunt valoarea 1

Nu as numi frumoasa o astfel de inregistrare, desi este corecta. Vă sugerez să faceți această notație puțin mai plăcută făcând-o să arate astfel:

Echo easyA($array)->dimension1->dimension2->dimension3->dimension4->dimension5->value1; // Hei! Sunt valoarea 1

De acord, chiar arată mult mai frumos în comparație cu înregistrarea standard.

Deci, mai întâi trebuie să creăm o clasă care va procesa matricea noastră. Să-l numim easyArray și să-l facem un Singleton:

Cod

class easyArray( private static $instance; // Starea clasei. private $Array; // Matrice care a fost transmisă clasei. private function __construct())( // A fost completat constructorul. ) private function __clone()) ( // S-a completat metoda de clonare. ) funcția publică statică getInstance())( if(null === self::$instance)( self::$instance = new self(); ) return self::$instance; )

După ce clasa noastră a devenit un singleton, îi vom adăuga o metodă foarte importantă, care va scrie tabloul rezultat într-o variabilă privată:

Cod

funcția publică loadArray($newArray)( if(is_array($newArray))( $this->Array = $newArray; return $this; )else( $error = "Ne pare rău, nu ați trecut o matrice."; aruncați nou Excepție ($eroare);
Din cod puteți vedea că verificăm și ceea ce a fost trecut la intrarea metodei. Dacă nu a fost transmisă o matrice, vom arunca pur și simplu o excepție cu eroarea " Din păcate, nu ați trecut o matrice". Dacă verificarea a avut succes, atunci scriem tabloul rezultat într-o variabilă privată și returnăm obiectul curent.

Ei bine, acum vom suprascrie metoda magică „__get()” a clasei noastre. Acest lucru este necesar pentru a obține rezultatul dorit. Aşa:

Cod

funcția publică __get($index)( if(isset($this->Array[$index]))( if(is_array($this->Array[$index]))( $this->loadArray($this-> Array[$index]); return $this; )else( return $this->Array[$index]; )else( $error = "Lipsește cheia (".$index.") în matrice"; aruncă o nouă excepție ($eroare);

În primul rând, verificăm prezența cheii solicitate în matrice dacă aceasta nu este acolo, aruncăm o excepție cu eroarea "; „Lipsește cheia (”.$index.”) în matrice”„. În continuare, verificăm dacă cheia solicitată este o matrice. Dacă există o valoare pentru o astfel de cheie în matrice, atunci pur și simplu returnăm această valoare. Și dacă este o matrice, atunci o trimitem la „ loadArray($newArray)" și returnează obiectul curent ($this).

Și, ca atingere finală a clasei noastre, să adăugăm o metodă care va returna matricea curentă cu care lucrează clasa noastră:

Cod

funcția publică arrayReturn() ( returnează $this->Array; )

Deci, clasa noastră este gata, dar pentru a obține valorile, acum trebuie să folosim cod ca acesta:

Echo easyArray::getInstance()->loadArray($array)->dimension1->dimension2->dimension3->dimension4->dimension5->value1; // Hei! Sunt valoarea 1

A devenit chiar mai lung decât era. Dar această problemă poate fi rezolvată și pentru aceasta avem nevoie de o funcție simplă:

Funcția easyA($newArray)( return easyArray::getInstance()->loadArray($newArray); )

Ei bine, acum să verificăm ce am obținut ca rezultat:

Cod

array("dimensiune2" => matrice("dimensiune3" => matrice("dimensiune4" => matrice("dimensiune5" => matrice("valoare1" => "Hei! I\"m valoare1", "valoare2" => "Hei! I\"m value2")))))); require_once("easyArray.php"); require_once("easyArrayFunction.php"); echo easyA($array)->dimension1->dimension2->dimension3->dimension4->dimension5->value1; // Hei! I\"m value1 echo easyA($array)->dimension1->dimension2->dimension3->dimension4->dimension5->value2; // Hei! I\"m value2 ?>
Totul funcționează conform intenției.

În plus, această clasă poate fi promovată fișierele de configurare tip:

Cod

array("dimension2" => array("dimension3" => array("dimension4" => array("dimension5" => array("value1" => "Hei! Am valoare1 din fișierul array.php", "value2" => "Hei! I\"m value2 din fișierul array.php")))))); ?>


Pentru a face acest lucru, trebuie să utilizați următoarea construcție:

Cod

echo easyA(require_once("array.php"))->dimension1->dimension2->dimension3->dimension4->dimension5->value1; // Hei! Sunt value1 din fișierul array.php

Poate că am reinventat roata, dar cred că acest articol va fi de interes atât pentru începători, cât și pentru alți programatori.

Vă mulțumim pentru atenție.