PHP: polje u polju. Pretraživanje u nizu PHP-a
Programiranje je sintaksa i semantika. Prvi se određuje pravilima jezika, a drugo prema iskustvu razvojnog programera. S obzirom na polja, programer može objektivno učitati sintaksa semantikom. Ovo nije objekt, ali ne polje u tradicionalnom smislu. PHP omogućuje stvaranje nizova varijabli različitih vrsta, uključujući i one. Element polja može biti funkcija, tj. Mogućnost učitavanja polja sa stvarnim algoritmom, s pravim značenjem.
sadržaj
Sintaksa je stabilna, ali se razlikuje od verzije do verzije i ne može uvijek biti kompatibilna, čak ni odozdo prema gore. Programi prenosivosti - dobro zaboravljeni uspjeh prošlog stoljeća. Semantika se razvija i uvijek se primjenjuje ne samo u bilo kojoj inačici bilo kojeg jezika, već je postala tradicija korištenja sintaktičkih konstrukcija kako bi se izrazila činjenica da pravila ni jezika nisu bila ni predviđena. Na primjer polja, ovo se može razumjeti najjednostavnije.
Izgradnja polja
Niz PHP-a ima zgodan sintaksa i funkcionalnost. ovo vrsta podataka može se opisati unaprijed, ali često je prikladno stvoriti polja na letu po potrebi.
javni $ aNone = array () - // polje je opisano i ne sadrži ništa
javni $ aFact = array (`avokado`, `breskva`, `trešnja`) - // u ovom nizu postoje tri elementa
Stvaranje polja tijekom provjere stanja:
$ cSrcLine = `niz parsiranih podataka`;
za ($ i = 0- $ i<13- $ i ++) {
$ cUserLine = inputUserLine () - // unos nešto
ako (checkFunc ($ cSrcLine, $ cUserLine) {
$ aResult [] = `Yes`- // dodaj u PHP niz
} else {
$ aResult [] = `Ne`;
}
}
Kao rezultat izvršenja ovog primjera, kreirat će se niz od 13 elemenata, čija će vrijednost biti samo linije "Da" ili "Ne". Elementi će dobiti indekse od 0 do 12. Isti se učinak može postići pisanjem "buduće" PHP niz na niz:
$ cFutureArray = ``;
za ($ i = 0- $ i<13- $ i ++) {
$ cUserLine = inputUserLine () - // unos nešto
ako ($ i> 0) `;
ako (checkFunc ($ cSrcLine, $ cUserLine) {$ cFutureArray. = `Da`;
} else {$ cFutureArray. = `Ne`}
}
$ aResult = eksplodira (`|`, $ cFutureArray);
Multidimenzionalni slojevi
Mnogi sustavi za upravljanje web stranicama (SMS) koriste polja "na velikoj skali". S jedne strane, to je dobra praksa, s druge strane, čini zahtjev teško. Čak i ako autor razumije doktrinu "PHP polja u nizu", ne bi ga trebalo zloupotrijebiti: ne samo da će se razvojni programeri morati naviknuti na složenu notaciju. Često nakon nekog vremena, kreator će se dugo sjetiti onoga što je napisao prije:
povratni niz (
`view_manager` => polje (41, `template_path_stack` => polje (__DIR__. `/../view`,),
`router` => polje (`routes` => polje (`sayhello` => polje (
`type` => `Zend Mvc Router Http Literal`,
`options` => array (`route` => `/ sayhello`, `defaults` => polje (
`control` => `Helloworld Controller Indeks`, `action` => `index`,)))))
`kontroleri` => polje (`invokables` => polje (
`Helloworld Controller Indeks` => `Helloworld Controller IndexController`))
);
Ovo je primjer praksa «PHP polje u nizu” iz ZF 2. Ne previše inspirativno na početku, ali to radi, a možda čini ovaj uspješan okvir (primjer iz modula ZendSkeletonApplication / modul / Helloworld / config / module.config.php).
Niz je važan oblik podataka tijekom dizajna i razvoja. Njegov višedimenzionalna verzija nekoć popularan, ali s vremenom je ostao potrebu za polja do dvije ili tri dimenzije. Dakle, to je lakše i razumljivije, ali sa profesionalne točke gledišta, kada se nešto počinje množiti, onda nešto u izjavi problema ili u kodu nije slučaj.
Jednostavan, pristupačan i razumljiv
Stvaranje php polja u nizu, najbolje je ograničiti na dvije ili tri razine. Unatoč stabilnosti i pouzdanosti PHP-a, omogućuje pogreške u obradi sintaktičkih konstrukcija. To se može tolerirati tako što ima dobar kodni urednik, navikavanje na točno brojanje zagrada i zareza. Međutim, PHP ne kontrolira vrste podataka (ovo je karma modernih programa) i dopušta razvojnom programeru da prakticira semantičke pogreške.
Pravilo nadzora tipova varijabli ili vlastitih ideja o pretvaranju semantike u sintaksu često je nedopustivo luksuz. To je gubitak brzine skripte, čitljivosti koda, ... stoga jednostavnost kodiranja uvijek ima značajnu vrijednost.
PHP ima značajnu negativnu značajku: kada se pojavi nesigurnost, skripta jednostavno visi. Nisu svi debuggers suočeni s nepredviđenim okolnostima, a mnogo ovisi o iskustvu i intuiciji programera. Što je algoritam jednostavniji, to je strukturiranija informacija, to je vjerojatnije da će pronaći pogrešku ili ga ne priznati.
Karakteristično je da se prilikom prvog pojavljivanja polja predložilo varijante podataka u obliku struktura - neugodan pokušaj stvaranja nečega iz različitih vrsta podataka. Prvi su preživjeli i stekli novu učinkovitu sintaksu, potonji su se spustili u povijest.
Jednostavni i asocijativni obrasci
Snimanje dvodimenzionalni niz - još jedan par zagrada „[” i „]”, na primjer: $ aSrcData [1] [2] znači pristupa stavci [2] od niza [1], ulaz na niz $ aSrcData. U PHP-u ne postoji obveza unaprijed deklarirati podatke. Sve deklarirane informacije uvijek se mogu provjeriti za postojanje.
Vrlo je djelotvorno stvoriti nešto samo kada je to potrebno, u obliku u kojem je to potrebno, i uništiti kad nestane potreba. Pomoću značajnih imena kao ključeva (indeksa) možete dobiti čitljive konstrukte koji su smisleni u kontekstu trenutnog mjesta u algoritmu:
$ aAnketa [`name`] = `Ivanov`-
$ aAnketa [`age`] = 42-
$ aAnketa [`work`] = `Direktor-
$ aAnketa [`active`] = true-
$ aTabel [] = $ anKeta-
$ aAnketa [`name`] = `Petrov`-
$ aAnketa [`age`] = 34-
$ aAnketa [`work`] = `Upravitelj`
$ aAnketa [`active`] = true-
$ aTabel [] = $ anKeta-
$ aAnketa [`name`] = `Afanasiev`-
$ aAnketa [`age`] = 28-
$ aAnketa [`work`] = `Work`-
$ aAnketa [`active`] = false-
$ aTabel [] = $ aAnketa;
$ sOne. = implode (";", $ aTable [1]). `
`- // drugi PHP niz u nizu
$ sOne. = $ aTabel [1] [`work`] - // pristupi jednom elementu drugog polja
Rezultat ovog primjera (prva polja su normalna, ključevi u njoj počinju sa 0, druga polja su asocijativni, u njemu postoje četiri ključa: `ime`, `staro`, `rad`, `aktivno`):
$ sOne = `Petrov-34- Manager-1
Upravitelja `;
U ovom jednostavnom primjeru možete vidjeti kako se stvoreni upitnik može primijeniti na sve zaposlenike. Možete stvoriti niz zaposlenika s indeksima po njihovim brojevima pločica i, ako vam je potreban određeni zaposlenik, odaberite je broj zaposlenika.
Ako organizacija ima podjele, ili postoje sezonski radnici, ili je potrebno odvojeno identificirati radno umirovljenike, ... dizajn "PHP-polja u nizu" je vrlo prikladan, ali se nikad ne smije primiti s dimenzionalnošću. Dvije ili tri dimenzije predstavljaju ograničenje za učinkovito rješenje.
Tipke za rad s poljem
Ako je prije bilo važno kako sve funkcionira, onda je posljednjih godina tradicija binarnog razdoblja, kada je programer želio točno znati kako se elementi polja pohranjuju i žele imati izravan pristup njima, potpuno su zaboravljeni. Postoje mnoga kodiranja znakova koja zauzimaju više od jednog bajta u memoriji. Riječ "bit" sada se može pronaći samo u operacijama pretraživanja bita, ali pretraživanje u PHP nizu je zasebna tema. Pristup elementima može biti jednostavan i asocijativan. U prvom slučaju, elementi polja (koji imaju bilo koju od vrsta dostupnih u PHP-u) broje se 0, 1, 2, ... U drugom slučaju programer navodi vlastiti indeks, često nazvan "ključ" za pristup željenoj vrijednosti.
$ aLine ["fruit"] = "narančasta" - // ovdje ključ PHP polja = "voće"
ili (tako da je sve u redu s kodiranjem stranice i koda):
$ Poravnati [iconv ( `UTF-8`, `CP1251` "voća")] = iconv ( `UTF-8`, `CP1251` "naranča");
Prilikom dodavanja vrijednosti $ aLine u novu vrijednost:
$ aLine [] = iconv (`UTF-8`, `CP1251`, `breskva`) -
$ Poravnati [iconv ( `UTF-8`, `CP1251` "biljna")] = iconv ( `UTF-8`, `CP1251` "krastavac") -
$ aLine [] = iconv (`UTF-8`, `CP1251`, `patlidžan`);
kao rezultat ciklusa:
foreach ($ aLine kao $ ck => $ cv) {
$ cOne. = $ ck. `=`. $ cv. `
„-
}
dobit će:
voće = narančasto
0 = breskva
povrće = krastavac
1 = patlidžan
PHP-ključ polja s dodatkom elemenata "breskve" i "patlidzan" formira se sekvencijalno od 0, a kada odredite njegovu vrijednost će biti jednaka ovoj vrijednosti.
Uklanjanje stavki iz polja
Najlakši način za uklanjanje elementa PHP polja tijekom njegove obrade. U tom slučaju, na primjer, kao rezultat izvršenja petlje, izvorni niz se skenira, a novi se stvara, u koji se nepotrebni elementi jednostavno ne pišu.
Moguće je lakše raditi. Ako se primijeni posljednji primjer:
unset ($ aLine [0]) - // uklanja element PHP polja
tada će rezultat biti:
voće = narančasto
povrće = krastavac
1 = patlidžan
Varijante manipuliranja elemenata polja mogu se mnogo izgrađivati. Na primjer, pomoću funkcija: implode () i explode (), možete napisati PHP niz u niz s jednim ograničenjem i analizirati ga u drugi niz - drugom razdjelniku.
Da biste jednostavno izbrisali cijeli niz u PHP-u, jednostavno upišite: unset ($ aLine);
To je dovoljno.
Pretražujte u nizu
PHP sadrži posebne funkcije pretraživanja array_keys (), array_values (), array_key_exists (), i in_array (), ali prije nego što ih odlučite upotrijebiti, trebali biste sami uzeti u obzir pretraživanje pretraživanja u PHP nizu.
Svaki projekt je konkretan predmetno područje, pogotovo kada se dio semantike prebaci u sintaksu i predstavlja ga skup potpuno konkretnih, smislenih ključeva. To vam omogućuje izvršavanje vlastitih funkcija pretraživanja, što također može biti smisleno određeno.
U PHP-u možete nazvati funkcije čije je ime definirano za vrijeme izvršavanja programa. Vrlo praktičan primjer iz PHPWord knjižnice, koja vam omogućuje čitanje i stvaranje MS Word dokumenata:
$ elements = array (`Tekst`, `Inline`, `TextRun`, `Link`, `PreserveText`, `TextBreak`
ListItem, ListItemRun, tablica, slika, objekt, fusnota,
`Endnote`, `CheckBox`, `TextBox`, `Field`, `Line`);
$ functions = array ();
za ($ i = 0- $ i < broj ($ elementi) - $ i ++) {
$ funkcije [$ i] = `dodaj`. $ elemenata [$ i] -
}
Kao rezultat, polje funkcija $ će dobiti vrijednosti elementa $ elemenata, odnosno imena stvarnih funkcija koje funkcioniraju sa stvarnim elementima dokumenta.
Pozivanje $ funkcija [4] za $ elemente [4], možete dobiti idealno pretraživanje i brzi rezultat.
Razvrstavanje stavki
Podaci sortiranje zadatak je važno, i PHP nudi nekoliko funkcija za to: vrsta (), rsort (), asort (), ksort (), ... uzlaznu i silaznu elementi posljednje dvije funkcije očuvanja odnosa između ključeva i vrijednosti. Ponekad ima smisla miješati vrijednosti redoslijeda slučajno - shuffle ().
Koristeći PHP funkcije za sortiranje, ne treba zaboraviti da elementi mogu imati ne samo različite vrste, ali i ne sasvim prirodni sadržaj. Prije svega, trebate biti vrlo pažljivi oko razvrstavanja redaka koji sadrže ruska slova, sortiranja datuma, kao i brojeva koji su zabilježeni u različitim formatima.
Najbolji način pisanja idealnog rješenja, barem u fazi testiranja skripte, je ručno sortiranje. To će vam pomoći predvidjeti nepredviđene situacije.
Mala slova
S funkcijama implode () i explode (), polje se lako može pretvoriti u niz i vratiti. To vam omogućuje pohranjivanje podataka u kompaktnom prikazu i njihovo postavljanje na prikladan način prema potrebi.
Niz u nizu otvara nove mogućnosti. Na primjer, zadatak traženja ključnih riječi u tekstu zahtijeva da se rezultat pretraživanja ne dodaje više puta.
$ cSrcLine = `TextText ListItemRun TextBox ListItem TextBox Check Box CheckBox TextBox Napomena`;
$ aSrc = eksplodiraj (``, $ cSrcLine) -
$ cDstLine = ``;
za ($ i = 0- $ i < broj ($ aSrc) - $ i ++) {
$ cFind = `[`. $ aSrc [$ i]. `] -
ako je (! is_integer (strpos ($ cDstLine, $ cFind))) {
$ cDstLine. = $ cFind-
}
}
$ aDst = eksplodiraj (`] [`, $ cDstLine) -
$ cOne = implode (`-`, $ aDst);
Kao rezultat toga, varijabla $ MEMBRANOM primaju samo vrijednosti iz izvornih linija koje zadovoljavaju tamo jednom: „teksta- ListItemRun- TextBox- ListItem, bez posluge Box CheckBox- Fusnota”.
Ruski jezik u ključevima i značenjima
Ne preporučuje se bilo kakvo korištenje nacionalnih kodova u sintaktičkim konstrukcijama. Ruski jezik, kao i svi ostali jezici čiji su likovi izvan a-z, neće uzrokovati probleme na području podataka, ali ne i u sintaksi koda. Ponekad čak i jednostavan zadatak u PHP-u "izlaziti niz na pisač ili na zaslon" će dovesti do "krađe", a češće samo zaustaviti skriptu.
PHP - jezik odani i tolerantni nacionalnog karaktera, ali postoje mnoge situacije u kojima je količina obavljenog posla mora učiniti opet samo zato što na pravom mjestu u pravo vrijeme će poskočiti ključ, utvrditi koje neće biti moguće.
PHP sintaksa i jezičnog okruženja
Zapamtite da je PHP sintaksa jedna stvar, ali sintaksa ove sintakse "bavi" se s drugim aplikacijama, s operativnim sustavom, s hardverskim mogućnostima. Postoje mnoge mogućnosti, nikada nije moguće predvidjeti sve.
Pravilo "u kodu postoji samo kod, a na ulazu, unutar i na izlazu postoje informacije" pomoći će izbjeći nepredviđena iznenađenja. PHP vrijednost u polju može biti "ruski", ali ključ za nju mora biti sintaktički korektan ne samo iz položaja danog jezika, već i sa položaja radnog okruženja.
- Što je morfologija? Ovo je znanost Riječi ...
- Semantika je znanost bez koje je nevjerojatno teško naučiti jezik
- Polje. Elementi polja. Zbroj elemenata polja, broj
- JS foreach objekt kao izvedbu varijanti
- Učinkovite foreach petlje: PHP i redovne polja
- PHP: zadnji element. Raspored u dinamici
- jаvascript: typeof - potreba ili nove značajke
- Pretvorba vrste. Okrugli i Trunc funkcioniraju u Pascalu
- Java raspored. Rasporedi u Javi. Java za početnike
- jаvascript Array za pohranu neograničenog broja varijabli
- Praksa PHP: usporedba s nizom
- Push / pop jаvascript Stack
- Korištenje funkcije eksplodira PHP
- Funkcija zbrajanja u SQL: SUM
- Upotreba indeksa (jаvascript) prilikom rada s nizovima i nizovima
- jаvascript: rad s nizovima, funkcije
- Što je sintaksa i kako je to povezano s interpunkcijom
- Pristup rezultatima uzorka putem MySQL fetch polja
- Odaberite jedinstvene zapise u MySQL upitu: odaberite razliku
- Kako odrediti broj elemenata u PHP nizu?
- Objekti i polja PHP-a: polje push & pop