Masyvuose pateikta informacija gali būtiskiriasi vertybių tipu ir dydžiu, o elementų skaičius ne visada yra iš anksto nustatomas. Šiuolaikinis programavimas, ypač paskirstytoje versijoje, leidžia sukurti sudėtingas duomenų struktūras, kurių turinys ir savybės gali būti nustatomos dinamiškai neribotą laiką dėl įvairių veiksmų ar įvykių skirtingose sekose.
Vystymosi etape ne visada įmanoma numatyti veiklos procesą, numatyti visas galimas informacijos pateikimo ir naudojimo galimybes, jų išvaizdos ir naudojimo dinamiką.
Paslėpkite sintaksę pagal turinį
Formuluodamas foreach sintaksę, PHP pasiūlė duprieigą prie elementų. Abi yra nepriklausomos nuo rakto tipo arba vertės tipo ir gali būti imituojamos pagal įprastą kilpą. Siūloma svarstyti masyvą kaip elementų rinkinį, kurių skaičius iš pradžių nėra apibrėžtas. Masyvas gali būti suformuotas skristi, su arba be raktų. Masyve elementas gali būti ištrintas, raktai gali būti asociatyvūs ir sudaryti pagal nutylėjimą.
foreach ($ aArrayName as $ xValue) {kilpos kūnas}
Tokia konstrukcija reikalauja PHP foreach kilpos.eiti per visus elementus iš eilės. Kilpos kūno dalyje $ xValue kintamasis nuosekliai imsis visų $ aArrayName masyvo reikšmių tokia tvarka, kuria jie buvo įtraukti. Elementų klavišų vertės nebus prieinamos.
foreach ($ aArrayName as $ xKey => $ xValue) {kilpos kūnas}
Čia taip pat vykdant foreach konstrukciją, phpnuskaito visą masyvo turinį, tačiau kilpos korpuse atitinkamos $ xValue kintamojo ir $ xKey kintamojo reikšmės, elemento raktas, paims poras.
Elementų seka
Внутри foreach PHP будет предлагать содержимое в elementų pridėjimo tvarką, bet jei masyvo formavimo metu buvo pakartotinių papildymų / ištrynimų, o kažkas buvo pridėta raktais ir kažkas be jo, tada geriausia dirbti su masyvu ne elementų sekos požiūriu, bet remiantis elementų seka, bet remiantis jų turinį arba raktus.
Dėl įvairių objektyvių priežasčiųmasyvo seka gali būti nesilaikoma ir (arba) gali būti nesvarbi, tačiau vis tiek neturėtų būti vadovaujamasi Atliekant paprastas užduotis, naudojant nereikšmingus duomenų rinkinius, nėra jokių problemų, o algoritmą galima sukonfigūruoti nuosekliam apdorojimui, tačiau kai masyvo kūrimo / redagavimo procesą veikia daugybė veiksnių, turėtumėte sutelkti dėmesį į turinį.
Šiuolaikiniai „teisingi“ elementai
Žvelgiant iš savo koncepcijos, net neatsižvelgiant į panašias kalbas, PHP foreach masyvas turi būti suprojektuotas savarankiškai, atsižvelgiant į realią konkrečią užduotį.
Praktika, kai yra duota, o duota turi indeksą bendroje panašių kolekcijoje pagal tam tikrą kriterijų, tai buvo vakar.
Indeksas tapo raktu, o masyvas įgavo formąasociatyvusis masyvas. Tai yra, raktas prarado nuoseklų unikalumą (jis paprastai buvo nuoseklus: 0, 1, 2, ... n) ir tapo taip pat vertybe, tačiau paprasta reikšme (tai yra raktu), susieta su realia verte (tai yra elemento turiniu). Tai šiandien, tai teisinga, bet ne tobula.
Štai kodėl PHP mano, kad foreach kilpa yra alternatyva įprastai kilpai, orientuotai į įprastus masyvus. Pirmiausia tai yra labai svarbu, nes iš to išplaukia tikrasis masyvo elementų teisingumastaip pat jų raktus!
Teisingi teisingų elementų masyvai
Pirmiausia buvo elementas, tada du elementai ... taigi atsirado elementų masyvas ir kilpa per masyvą tų:
už ($ i = 0; $ i <count ($ aArrayName); $ i ++) {
kiekvieno $ aArrayName [$ i] pagrindo apdorojimas
}
Tada vietoj beveidžio 0, 1, 2, ... n elementas gavo savo pavadinimą - raktas ir masyvai tapo asociatyvūs, o tada reikėjo foreach kilpos - „kilpa per kiekvieną“:
foreach ($ aArrayName kaip $ xKey => $ xValue) {
kiekvieno $ aArrayName [$ xKey] arba $ xValue apdorojimo turinys yra tas pats
}
Dabar atėjo laikas, kai masyvui turėtų ateiti teisingi elementai, tai yra tuos, kurie yra savaime. Jie patys žino savo rodyklę, turinį, vietą sekoje; jie linkę parodyti savo pasirinktą seką ir perduoti visas šias galimybes tikram masyvui, kuriame jie yra.
Tokie teisingi masyvai bus apdorojamipatys. Paprasčiausiai nebus ypatingo poreikio naudoti įprastas kilpas ir kilpas kiekvienai. Formaliai sintaksė ir semantika tai jau leidžia, klausimas yra tik už kūrėjo sąmonės inercijos.