Taulukoissa esitetyt tiedot voivateroavat arvojen tyypistä ja niiden koosta, ja elementtien lukumäärää ei aina voida määrittää etukäteen. Nykyaikainen ohjelmointi, etenkin hajautetussa versiossa, mahdollistaa monimutkaisten tietorakenteiden luomisen, joiden sisältö ja ominaisuudet voidaan määrittää dynaamisesti määrittelemättömän ajankohtana erilaisten toimintojen tai tapahtumien seurauksena, eri järjestyksessä.
Kehitysvaiheessa ei aina ole mahdollista ennustaa toimintaprosessia, tarjota kaikkia mahdollisia vaihtoehtoja tiedon esittämiselle ja käytölle, niiden ulkoasun ja käytön dynamiikalle.
Laadittaessaan syntaksin ennustetta, PHP ehdotti kahtakohteiden käyttövaihtoehdot. Molemmat ovat riippumattomia joko avaintyypistä tai arvotyypistä, ja ne voidaan jäljitellä säännöllisessä silmukassa. Taulukkoa ehdotetaan pidettäväksi elementtijoukkona, jonka määrää ei alun perin määritetä. Ryhmä voidaan muodostaa lennossa näppäimillä tai ilman. Elementti voidaan poistaa taulukosta, avaimet voivat olla assosiatiivisia ja muodostaa oletuksena.
foreach ($ aArrayName kuin $ xValue) {loop body}
Tällainen rakenne pakottaa PHP: n foreach-silmukankäydä läpi kaikki elementit peräkkäin. Silmukan rungossa muuttuja $ xValue ottaa peräkkäin kaikki $ aArrayName-taulukon arvot siinä järjestyksessä, jossa ne lisättiin. Kohde-avaimen arvot eivät ole käytettävissä.
foreach ($ aArrayName muodossa $ xKey => $ xValue) {silmukan runko}
Tässä myös suorittamalla foreach-rakentaminen, PHPskannaa matriisin koko sisällön, mutta silmukan rungossa sekä $ xValue -muuttuja että $ xKey -muuttuja, elementtiavain, ottavat vastaavat arvot pareittain.
Ineach foreach PHP ehdottaa sisältöäjärjestys, jossa elementit lisättiin, mutta jos taulukon muodostamisen aikana tapahtui toistuvia lisäyksiä / poistoja ja jotain lisättiin näppäimillä ja jotain ilman, on parasta työskennellä matriisin kanssa ei elementtisarjan sijainnista, vaan niiden sisällön tai näppäimillä.
Eri objektiivisista syistätaulukon sisällä olevaa sekvenssiä ei välttämättä noudateta ja / tai se ei välttämättä ole väliä, mutta sitä ei tulisi joka tapauksessa ohjata sisään. Yksinkertaisissa tehtävissä, triviaalisissa tietojoukoissa, ei ole ongelmia, ja algoritmi voidaan määrittää peräkkäistä käsittelyä varten, mutta kun monet tekijät vaikuttavat taulukon luomiseen / muokkaamiseen, sinun on keskityttävä sisältöön.
Oman konseptinsa näkökulmasta PHP: n foreach-taulukko on suunniteltava itsenäisesti, ottamatta huomioon todellisia erityistehtäviä, ottamatta edes huomioon tällaisia kieliä.
Harjoittele, kun on olemassa tietty annos, ja annetulla on indeksi vastaavien yleisessä kokoelmassa tietyn kriteerin mukaisesti, - se oli eilen.
Hakemistosta tuli avain, ja taulukko otti muodonassosiatiivinen taulukko. Toisin sanoen avain menetti peräkkäisen ainutlaatuisuutensa (se oli yleensä peräkkäinen: 0, 1, 2, ... n) ja siitä tuli myös arvo, mutta yksinkertainen arvo (eli avain), joka liittyy todelliseen arvoon (eli elementin sisältöön). Tämä on tänään, tämä on oikein, mutta ei täydellinen.
Siksi PHP pitää foreach-silmukkaa vaihtoehtona tavallisille matriiseille suunnatulle tavalliselle silmukalle. Tämä on ensinnäkin, ja tämä on erittäin tärkeää, koska siitä seuraa taulukon elementtien todellinen oikeellisuussamoin kuin heidän avaimensa!
Ensin oli elementti, sitten kaksi elementtiä ... joten joukko elementtejä ilmestyi ja silmukka joukon läpi:
for ($ i = 0; $ i <count ($ aArrayName); $ i ++) {
kunkin $ aArrayName [$ i] -käsittelyosa
}
Sitten kasvoton 0, 1, 2, ... n sijasta elementti sai oman nimensä - avain ja sitten matriisista tuli assosiatiivisia ja sitten tarvittiin foreach-silmukka - "silmukka kunkin läpi":
foreach ($ aArrayName muodossa $ xKey => $ xValue) {
kunkin $ aArrayName [$ xKey] - tai $ xValue-arvon käsittelyosa, joka on sama
}
Nyt on tullut aika, jolloin oikeiden elementtien pitäisi tulla matriisiineli ne, jotka ovat itsessään. He itse tietävät hakemiston, sisällön, paikkansa sekvenssissä; heillä on taipumus ilmentää oma valinta sekvenssinsä ja delegoida kaikki nämä ominaisuudet todelliselle taulukolle, joka ne sisältää.
Tällaiset oikeat taulukot käsitelläänyksin. Ei ole erityistä tarvetta käyttää tavallisia silmukoita ja silmukoita kullekin. Muodollisesti syntaksin ja semantiikan avulla tämä jo sallitaan, kysymys on vain kehittäjän tietoisuuden hitauden takana.