Informationen in Arrays dargestellt werden könnenunterscheiden sich in der Art der Werte und ihrer Größe, und die Anzahl der Elemente kann nicht immer im Voraus bestimmt werden. Die moderne Programmierung, insbesondere in der verteilten Version, ermöglicht das Erstellen komplexer Datenstrukturen, deren Inhalt und Eigenschaften durch verschiedene Aktionen oder Ereignisse in einer anderen Reihenfolge zu einem unbestimmten Zeitpunkt dynamisch bestimmt werden können.
Nicht immer in der Entwicklungsphase können Sie den Operationsprozess vorhersagen, alle möglichen Optionen für die Darstellung und Nutzung von Informationen, die Dynamik ihres Auftretens und ihrer Verwendung bereitstellen.
Die Syntax von foreach formuliert PHP zweiOption für den Zugriff auf Elemente. Beide hängen weder vom Schlüsseltyp noch vom Werttyp ab und können von der normalen Schleife emuliert werden. Es wird vorgeschlagen, das Array als eine Sammlung von Elementen zu behandeln, deren Anzahl anfänglich nicht definiert ist. Ein Array kann im laufenden Betrieb mit oder ohne Schlüssel erstellt werden. In einem Array kann ein Element gelöscht werden, Schlüssel können assoziativ sein und standardmäßig gebildet werden.
foreach ($ aArrayName als $ xValue) {Körper der Schleife}
Eine solche Konstruktion erfordert eine foreach-Schleifegehe durch alle Elemente in einer Reihe. Im Schleifenkörper übernimmt die Variable $ xValue nacheinander alle Werte des Arrays $ aArrayName in der Reihenfolge, in der sie hinzugefügt wurden. Elementschlüsselwerte sind nicht verfügbar.
foreach ($ aArrayName als $ xKey => $ xValue) {Körper der Schleife}
Auch hier, indem Sie das foreach-Konstrukt PHP ausführenscannt den gesamten Inhalt des Arrays, aber im Schleifenkörper werden die entsprechenden Werte als Variable $ xValue und die Variable $ xKey - der Schlüssel des Elements - verwendet.
Innerhalb von PHP bietet foreach Inhalte inIn der Reihenfolge, in der die Elemente hinzugefügt wurden, aber wenn es mehrere Additionen / Löschungen während der Array-Bildung gab und etwas mit den Schlüsseln hinzugefügt wurde, und etwas ohne, dann ist es am besten, mit dem Array nicht aus der Sequenz der Elemente Elemente zu arbeiten, sondern basierend auf ihr Inhalt oder auf den Schlüsseln.
Aus verschiedenen objektiven GründenDie Reihenfolge innerhalb des Arrays wird möglicherweise nicht respektiert und / oder ist möglicherweise nicht von besonderer Bedeutung, sollte aber in keiner Weise ausgerichtet sein. In einfachen Tasks auf triviale Datensätzen, kein Problem, und der Algorithmus kann zur sequentiellen Verarbeitung eingestellt werden, aber bei der Erstellung / Editieren des Array Prozess von vielen Faktoren beeinflusst wird, sollte auf den Inhalt konzentrieren.
Vom Standpunkt des bestehenden eigenen Konzepts aus, ohne die bedingungslosen ähnlichen Sprachen zu berücksichtigen, muss das PHP foreach-Array unter Berücksichtigung der realen konkreten Aufgabe unabhängig entworfen werden.
Übe, wenn ein gegeben ist, und dieser hat einen Index in der allgemeinen Sammlung von ihm ähnlich nach einem bestimmten Kriterium - es war gestern.
Der Index wurde zum Schlüssel, und das Array nahm Form anassoziatives Array. Das heißt, der Schlüssel hat seine sequentielle Eindeutigkeit verloren (normalerweise war er konsistent: 0, 1, 2, ... n) und wurde auch ein Wert, aber ein einfacher Wert (dh ein Schlüssel), der dem realen Wert (dh dem Inhalt des Elements) zugeordnet ist. Es ist heute, es ist richtig, aber nicht perfekt.
Deshalb wird die foreach-Schleife von PHP als Alternative zu einer regulären Schleife betrachtet, die auf reguläre Arrays ausgerichtet ist. Dies ist in erster Linie, und das ist sehr wichtig, weil es impliziert echte Korrektheit von Array-Elementensowie ihre Schlüssel!
Zuerst gab es ein Element, dann zwei Elemente ... also gab es eine Reihe von Elementen und eine Schleife entlang einer Reihe von diesen:
für ($ i = 0; $ i <Anzahl ($ aArrayName); $ i ++) {
der Verarbeitungskörper jedes $ aArrayName [$ i]
}
Dann hatte das Element anstelle des gesichtslosen 0, 1, 2, ... n seinen eigenen Namen - der Schlüssel und dann wurden die Arrays assoziativ, und dann wurde eine foreach-Schleife benötigt - eine "Schleife für jeden":
foreach ($ aArrayName als $ xKey => $ xValue) {
der Verarbeitungskörper jedes $ aArrayName [$ xKey] oder $ xValue, der identisch ist
}
Jetzt ist es an der Zeit, mit den richtigen Elementen zum Array zu kommendas sind diejenigen, die für sich allein sind. Sie selbst kennen ihren Index, ihren Inhalt, ihren Platz in der Reihenfolge, neigen dazu, ihre eigene Sequenzwahl zu treffen und all diese Möglichkeiten an das eigentliche Array zu delegieren, das sie enthält.
Solch ein gültiges Array wird behandeltfür sich selbst. Eine spezielle Notwendigkeit, normale Zyklen und Zyklen für jeden zu verwenden, wird einfach nicht sein. Formal erlauben die Syntax und Semantik bereits, die Frage ist nur die Trägheit des Entwicklerbewusstseins.
</ p>