/ / Effektiva foreach-slingor: PHP och korrekta matriser

Effektiva foreach-slingor: PHP och lämpliga matriser

Information som tillhandahålls i matriser kanskiljer sig i typen av värden och deras storlek, och antalet element kan inte alltid bestämmas i förväg. Modern programmering, särskilt i en distribuerad version, låter dig skapa komplexa datastrukturer, vars innehåll och egenskaper kan bestämmas dynamiskt på obestämd tid till följd av olika åtgärder eller händelser i en annan sekvens.

foreach php

Det är inte alltid möjligt i utvecklingsstadiet att förutsäga driftsprocessen, tillhandahålla alla möjliga alternativ för presentation och användning av information, dynamiken i deras utseende och användning.

Syntax för innehållsslinga

Formulera foreach-syntaksen föreslog PHP tvåalternativ för åtkomst till element. Båda är oberoende av nyckeltyp eller värdetyp och kan emuleras med en normal slinga. Det föreslås att en matris betraktas som en samling element, vars antal inte initialt bestäms. Matrisen kan formas i farten, med eller utan nycklar. Ett element kan raderas i en matris, nycklar kan vara associerande och formas som standard.

foreach ($ aArrayName som $ xValue) {loop body}

En sådan konstruktion förpliktar PHP foreach-slingangå igenom alla element i rad. I kroppen av slingan tar variabeln $ xValue sekventiellt alla värdena i $ aArrayName-matrisen i den ordning de läggs till. Objektnyckelvärden är inte tillgängliga.

foreach ($ aArrayName som $ xKey => $ xValue) {loop body}

Här utförs också foreach-konstruktionen, PHPkommer att skanna hela innehållet i matrisen, men i slingans kropp kommer både $ xValue-variabeln och $ xKey-variabeln, elementnyckeln, att ta motsvarande värden i par.

php foreach loop

Sekvens av element

Inne i foreach PHP kommer att föreslå innehåll iden ordning i vilken elementen tillsattes, men om det under bildandet av matrisen fanns upprepade tillägg / raderingar, och något lades till med nycklar och något utan, är det bäst att arbeta med matrisen inte från positionen för elementsekvens, men baserat på deras innehåll eller på tangenterna.

php foreach array

Av olika objektiva skälsekvensen inom matrisen kanske inte följs och / eller spelar ingen roll, men bör inte vägledas i alla fall. I enkla uppgifter, på triviala datauppsättningar, finns det inga problem och algoritmen kan konfigureras för sekventiell bearbetning, men när många faktorer påverkar processen att skapa / redigera en matris bör du fokusera på innehållet.

Moderna "korrekta" element

Ur synvinkeln för sitt eget koncept, utan att ens ta hänsyn till liknande språk, måste PHP foreach-arrayen utformas oberoende med hänsyn till en verklig specifik uppgift.

Öva, när det finns en given, och den givna har ett index i den allmänna samlingen av liknande enligt ett visst kriterium, - det var igår.

Indexet har blivit en nyckel och arrayen har blivitassocierande array. Det vill säga, nyckeln förlorade sin sekventiella unikhet (den var vanligtvis sekventiell: 0, 1, 2, ... n) och blev också ett värde, men ett enkelt värde (det vill säga en nyckel) associerat med ett verkligt värde (som är innehållet i ett element). Detta är idag, detta är korrekt, men inte perfekt.

Det är därför PHP betraktar foreach-slingan som ett alternativ till den vanliga slingan som är inriktad på vanliga matriser. Detta är först och främst, och det är det som är mycket viktigt, för därav följer det verklig korrekthet hos arrayelementliksom deras nycklar!

Rätta matriser med korrekta element

Först fanns det ett element, sedan två element ... så här uppträdde en rad element och en slinga genom en grupp av dessa:

för ($ i = 0; $ i <count ($ aArrayName); $ i ++) {

bearbetningsorgan för varje $ aArrayName [$ i]

}

Sedan, i stället för ansiktslösa 0, 1, 2, ... n, fick elementet sitt eget namn - nyckeln och sedan matriserna blev associerande och sedan behövdes foreach-slingan - "loop through each":

foreach ($ aArrayName som $ xKey => $ xValue) {

bearbetningskroppen för varje $ aArrayName [$ xKey] eller $ xValue som är densamma

}

Nu är det dags att rätt element ska komma till matrisen., det vill säga de som är i sig själva.De känner själva sitt index, deras innehåll, deras plats i sekvensen; de tenderar att manifestera sitt eget val av sekvens och delegera alla dessa möjligheter till den faktiska matrisen som innehåller dem.

Sådana korrekta matriser behandlasav sig själva. Det kommer helt enkelt inte att finnas ett speciellt behov av att använda vanliga öglor och öglor för var och en. Formellt tillåter syntaxen och semantiken detta redan, frågan ligger bara bakom trögheten hos utvecklarens medvetande.