Na razini PHP, niz je uređena lista koja se mapira na kartu. Drugim riječima, PHP jednostavno kombinira ova dva koncepta, što rezultira prilično fleksibilnom, ali, s druge strane, ne najoptimalnijom strukturom podataka u usporedbi sa sličnim opcijama.
Malo ljudi zna da na razini C (i doista na razini sustava) nema polja koje bi mogle imati ne-fiksnu veličinu. Dakle, ako namjeravate stvoriti niz u C, onda ćete svakako trebati odrediti njegovu veličinu kako bi sustav odredio koliko slobodnog prostora trebate dodijeliti za njega.
U PHP-u, sortiranje niza je daleko od istog kao u drugim spremištima podataka, ovdje je to uređeno mapiranje, koje određuje korespondenciju između ključa i određene vrijednosti. Ovaj tip polja optimiziran je u nekoliko različitih smjerova, što vam omogućuje da ga aktivno koristite izravno kao niz, kao i rječnik, predavanje, hash-tablicu, kao i za brojne druge svrhe, prema vlastitom nahođenju. Treba napomenuti da u slučaju PHP-a vrijednost u nizu može biti još jedan sličan niz. To vam omogućuje da formirate stabla, kao i višedimenzionalnu pohranu.
Među razlikovnim značajkama tog spremišta, vrijedi napomenuti kako je lako ukloniti niz u PHP-u. Doista, u ovom slučaju, postupak je mnogo jednostavniji nego u sličnim sustavima datoteka.
Ako namjeravate stvoriti potpuno prazan niz, tada se u tom slučaju PHP niz kreira s određenom veličinom. Ako je ovaj volumen popunjen, a nakon toga se odlučite premašiti ovu veličinu, tada će se stvoriti potpuno novi niz koji će imati volumen dvostruko veći od postojećeg i svi će se podaci kopirati u njega, dok će stari niz biti potpuno uništen. Ovaj pristup je standardni.
U stvari, kako bi se implementirao PHP niz, koristi se tradicionalna struktura podataka Hash Table. Ova struktura uključuje pokazivač na posljednju i prvu vrijednost, koja je potrebna za naručivanje nizova, kao i pokazivač na trenutnu vrijednost, koja se koristi za osiguravanje iteracije nad nizom. Osim toga, tablica hashova sadrži broj stavki pohranjenih u niz, polje pokazivače na žlicu i druge važne podatke.
Hash Table ima dvije važne značajke - to je sama struktura podataka, kao i Bucket (žlica).
Posude pohranjuju same vrijednosti, tj. Svaka od njih ima vlastitu kantu, ali osim toga sadrži i izvorni ključ, kao i razne pokazivače na prethodne ili sljedeće kasete, koje se koriste za organiziranje stvorenog niza, kao u PHP-u. Tipke mogu ići drugačijim redoslijedom, ovisno o željama korisnika.
Dakle, ako želite dodati neki novi element u polje, ali taj ključ još nije prisutan, pod njim će se automatski stvoriti nova ćelija koja će biti dodana Hash tablici. I u ovom slučaju, morate ispravno razumjeti kako će višedimenzionalni PHP niz pohraniti te ćelije.
Kao što je gore spomenuto, sustav ima specijaliziranu skupinu pokazivača na ćelije, pri čemu svaka grupa ima pristup kroz određeni indeks, koji se određuje pomoću ključa. Zvuči često prilično teško, ali u stvarnosti sve je nešto jednostavnije nego što se čini. Tako se ključ može dobiti na sljedeći način:
O maski: na primjer, polje podataka sadrži četiri različita elementa, a maska će biti jednaka tri. Sada, ako kao ključ dobivate broj kao 123, u ovom slučaju, nakon primjene maske, 3 će biti primljena, a taj broj se već može koristiti kao indeks.
Žlice imaju nekoliko važnih značajki koje treba znati. Svaka grupa ima pokazivač na sljedeću i prethodnu, s jednakim indeksima. Dakle, pored glavne dvostruko povezane liste koja prolazi kroz sve korištene kante, postoje i dva mala dvostruko povezana popisa između ćelija koje imaju jednak indeks.
Ono što se događa nakon potpunog popunjavanja korištenog polja naziva se rehash među stručnjacima. U biti, riječ je o ponavljanju svih korišćenih žlica, kao io dodjeli njihovih susjeda i dodavanju veza s njima.
Postupak je u početku isti kao u slučaju dobivanja ključa, ali u ovom slučaju postoji nastavak:
Takve se radnje moraju ponavljati sve dok se žlice ne ispune u potpunosti iz pNext ili dok ne pronađete željenu utakmicu.
Važno je napomenuti da je višedimenzionalni PHP niz gotovo u potpunosti izgrađen na jednoj HashTable strukturi, budući da su sve varijable koje su u određenom opsegu zapravo u ovoj podatkovnoj strukturi, poderane kao metode, polja i definicije klasa. Osim toga, ova struktura podataka omogućuje postizanje gotovo iste brzine svih operacija i istodobno ih čini mnogo jednostavnijim u izvršavanju.
Niz se stvara pomoću niza jezičnih konstrukcija, koji može uzeti bilo koji broj ključeva => parova vrijednosti, odvojene zarezima, kao parametre.
Ključ u ovom slučaju može biti string ili cijeli broj. Ako je ključ standardni broj, tada će se interpretirati u ovom slučaju, dok će plutač biti odrezan na taj format. Važno je napomenuti da u PHP-u sortiranje niza ne osigurava nikakvu razliku između asocijativnih i indeksnih nizova, tj. Postoji samo jedan tip pohrane koji sadrži i nizove i numeričke indekse.
Za normalan rad s nizovima osigurava se dovoljno velik broj različitih funkcija, ali ne znaju svi i mogu ih koristiti. Posebno treba obratiti posebnu pozornost na takvu funkciju kao što je unset, što vam omogućuje da u potpunosti uklonite ključeve koje element niza ima u PHP-u. Ako želite izvesti radnju u stilu "ukloni i premjestiti", polje se može ponovno indeksirati kroz vrijednosti polja.
Foreach kontrolna struktura je posebno stvorena za rad s nizovima. Ova funkcija se koristi za jednostavno pregledavanje sadržaja polja i interakciju s podacima.
Prilikom deklariranja indeksiranog PHP niza, nakon što je postavljeno ime varijable, postavlja se i par kvadratnih zagrada, u kojem je položaj danog niza označen izravno. Postoji i nekoliko osnovnih naredbi koje morate znati prilikom izrade ovog polja:
U svakom slučaju, string literal mora biti zatvoren u navodnike u indeksu asocijativnog niza. Često se sintaksa može naći u starim skriptama, u kojima nema navodnika, a to zapravo može raditi, iako je netočno. U ovom slučaju, razlog je u tome što ovaj kod sadrži neograničenu konstantu umjesto niza, zbog čega u PHP-u izlazni niz može biti takav da se "goli red" može automatski pretvoriti u puni niz s odgovarajućom vrijednošću. Drugim riječima, ako u početku nije bilo moguće odrediti postavljenu konstantu, tada će PHP sam dodavati navodnike, a zatim ispravno koristiti uneseni niz.
Treba napomenuti da nije uvijek potrebno priložiti ključeve u navodnicima. Na primjer, nema potrebe za uvrštavanjem varijabli ili konstanti u navodnike, jer u ovom slučaju izlaz matrice u PHP-u može biti netočan, a te će naredbe biti pogrešno obrađene.
Ako u budućnosti razvojni tim PHP-a odluči dodati neku novu ključnu riječ ili dodatnu konstantu, možda ćete imati problema. Isto vrijedi i za situaciju ako konstantu iz drugog koda ometa vaš niz. Na primjer, možda nećete moći koristiti riječi kao što je zadana i prazna jer su to rezervirani ključevi.
Za bilo koji tip ključa, pretvaranje vrijednosti u PHP nizove, čije funkcije korisnik sam odabire, u konačnici osigurava mogućnost dobivanja niza s jednim elementom koji ima skalarnu vrijednost.
Ako odlučite pretvoriti objekt u niz, tada će se u tom slučaju svojstva ovog objekta koristiti kao elementi tog polja. Nakon što odlučite kako izvesti niz u PHP-u, nazivi svojstava objekta s određenim iznimkama bit će korišteni kao ključevi:
Sve ove dodane vrijednosti imaju nula bajta na obje strane, što često može izazvati donekle neočekivano ponašanje niza za njegovog vlasnika.
Kao što možete vidjeti, korištenje takvih nizova je vrlo jednostavno za napredne korisnike, i što je još važnije, iznimno su prikladni za korištenje. Nijedan veliki projekt ne može se zamisliti bez upotrebe različitih vrsta nizova, dok smo u isto vrijeme pokušali uzeti u obzir samo određeni dio obilježja i raspoloživih funkcija takvih sustava, bez ulaženja u bilo kakve suptilnosti kako se mogu koristiti u različitim situacijama.