Informácie uvedené v poliach môžulíšia sa typom hodnôt a ich veľkosťou a počet prvkov nie je možné vždy určiť vopred. Moderné programovanie, najmä v distribuovanej verzii, umožňuje vytvárať zložité dátové štruktúry, ktorých obsah a vlastnosti je možné dynamicky určiť v neurčitom čase v dôsledku rôznych akcií alebo udalostí v inom poradí.
Vo vývojovej fáze nie je vždy možné predpovedať operačný proces, predpokladať všetky možné možnosti prezentácie a použitia informácií, dynamiku ich vzhľadu a použitia.
Formulovanie syntaxe foreach PHP navrhlo dvemožnosti prístupu k prvkom. Oba sú nezávislé od typu kľúča alebo typu hodnoty a je možné ich emulovať normálnou slučkou. Navrhuje sa považovať pole za súhrn prvkov, ktorých počet nie je na začiatku určený. Pole sa dá vytvoriť za behu, s kľúčmi alebo bez nich. Prvok je možné v poli vymazať, kľúče môžu byť predvolene asociatívne a formované.
foreach ($ aArrayName ako $ xValue) {loop telo}
Takáto konštrukcia vyžaduje slučku PHP foreachprechádzať všetky prvky za sebou. V tele slučky bude premenná $ xValue postupne brať všetky hodnoty poľa $ aArrayName v poradí, v akom boli pridané. Hodnoty kľúča položky nebudú k dispozícii.
foreach ($ aArrayName ako $ xKey => $ xValue) {telo slučky}
Tu tiež vykonávame konštrukciu foreach, PHPprehľadá celý obsah poľa, ale v tele slučky bude mať premenná $ xValue aj premenná $ xKey, kľúč prvku, zodpovedajúce hodnoty v pároch.
Vo vnútri foreach PHP navrhne obsah vporadie, v akom boli prvky pridané, ale ak sa počas formovania poľa vyskytli opakované pridania / vymazania a niečo bolo pridané pomocou kľúčov a niečo bez, potom je najlepšie pracovať s poľom nie z pozície postupnosti prvkov, ale na základe ich obsahu alebo na klávesoch.
Z rôznych objektívnych dôvodovpostupnosť v poli nemusí byť dodržaná a / alebo nemusí na tom veľmi záležať, rovnako by sa však nemala viesť. Pri jednoduchých úlohách na triviálnych množinách údajov nie sú žiadne problémy a algoritmus je možné nakonfigurovať na sekvenčné spracovanie. Ak však na proces vytvárania / úpravy poľa má vplyv veľa faktorov, mali by ste sa zamerať na obsah.
Z hľadiska vlastnej koncepcie musí byť PHP foreach pole bez ohľadu na podobné jazyky navrhnuté nezávisle, berúc do úvahy skutočnú konkrétnu úlohu.
Prax, keď existuje, a daný má index vo všeobecnej zbierke podobných podľa určitého kritéria, - bolo to včera.
Index sa stal kľúčom a pole sa staloasociatívne pole. To znamená, že kľúč stratil svoju sekvenčnú jedinečnosť (zvyčajne to bolo sekvenčné: 0, 1, 2, ... n) a stal sa tiež hodnotou, ale jednoduchou hodnotou (tj. Kľúčom) spojenou so skutočnou hodnotou (to znamená obsahom prvku). Toto je dnes, je to správne, ale nie dokonalé.
Preto PHP považuje slučku foreach za alternatívu k regulárnej slučke orientovanej na regulárne polia. Toto je predovšetkým a toto je veľmi dôležité, pretože z toho vyplýva skutočná správnosť prvkov poľarovnako ako ich kľúče!
Najprv to bol prvok, potom dva prvky ... takto sa objavilo pole prvkov a slučka cez pole týchto prvkov:
pre ($ i = 0; $ i <count ($ aArrayName); $ i ++) {
telo spracovania každého $ aArrayName [$ i]
}
Potom prvok dostal svoje vlastné meno namiesto anonymných 0, 1, 2, ... n - kľúč a potom sa polia stali asociatívnymi a potom bola potrebná slučka foreach - „slučka na každom“:
foreach ($ aArrayName ako $ xKey => $ xValue) {
telo spracovania každého $ aArrayName [$ xKey] alebo $ xValue, ktoré je rovnaké
}
Teraz nastal čas, keď by do poľa mali prísť správne prvky, teda tých, ktoré sú samy o sebe.Sami poznajú svoj index, svoj obsah, svoje miesto v sekvencii; majú sklon prejavovať svoj vlastný výber sekvencie a delegovať všetky tieto schopnosti na skutočné pole, ktoré ich obsahuje.
Takéto správne polia sa spracujúsamy od seba. Pre každú z nich jednoducho nebude potrebné používať obyčajné slučky a slučky. Formálne to už syntax a sémantika umožňujú, otázka stojí iba za zotrvačnosťou vedomia vývojára.