Foreach in PHP

[an error occurred while processing this directive] php array foreach php foreach foreach in php php foreach key value php foreach as php foreach break Mit Foreach steht unter PHP ein Schleifentyp zur Verfügung, mit dessen Hilfe der Programmierer auf einfache Weise durch Datenfelder iterieren kann. Die Iteration durch Arrays ist auch die einzige Aufgabe, für die man die Foreach-Schleife verwenden kann. Foreach ist eine kopfgesteuerte Schleife, was bedeutet, dass die Schleifenbedingung grundsätzlich vor dem Eintritt in den Schleifenkörper geprüft wird. Trifft diese Bedingung nicht zu, so wird der Schleifenkörper auch nicht ausgeführt. Wie bei allen anderen Schleifentypen müssen Anweisungsblöcke (mehrere pro Schleifendurchgang auszuführende Anweisungen) geklammert werden. Soll lediglich eine einzige Anweisung mehrfach ausgeführt werden, so erübrigt sich eine Klammerung.

Andere unter PHP einsetzbare Schleifen, die gleichermaßen zu den kopfgesteuerten Schleifentypen zählen, sind die While-Schleife und die For-Schleife. Als einzige fußgesteuerte Schleifenvariante gibt es auch unter PHP die do-While-Schleife. Beachten Sie bitte auch unsere Ausführungen zu Foreach in JavaScript.

PHP Array Foreach: Alle Elemente in Arrays einzeln durchgehen

Folgendes Anwendungsbeispiel nutzt eine Variable zur Speicherung des Arrays, über dessen Elemente durch die Foreach-Schleife iteriert werden soll. Hier wird zugleich das direkte Ändern der im Array abgelegten Werte demonstriert – was mit einer Referenzierung der Array-Elemente möglich ist. Mit echo werden die im Array enthaltenen Elemente ausgegeben.

<?php
    // Array mit Zahlenwerten initialisieren
    $zahlenarray = array (1, 2, 3, 4, 5);
    // Ausgabe des Arrays
    foreach ($zahlenarray as $value)
        // Nach dem eigentlichen Wert aus value wird ein Komma oder ein
        // Zeilenumbruch (durch den HTML-Code <br>) ausgegeben. Durch die
        // verkürzte If-Abfrage wird bei jedem Schleifendurchgang geprüft,
        // ob das Letzte Element erreicht wurde. In diesem Falle wird
        // der Zeilenumbruch, statt des Komma und dem darauf folgenden
        // Leerzeichen ausgegeben. Dies funktioniert natürlich nur solange
        // es den letzten Wert im Array nicht mehrfach gibt
        echo $value . ($value == end ($zahlenarray) ? '<br>' : ', ');

    // Folgender Versuch die Werte im Array zu ändern klappt nicht. Das liegt
    // daran, dass stets eine Kopie des jeweiligen Array-Elements der Variablen
    // value zugewiesen wird. Änderungen wirken sich deshalb nicht auf das
    // Array aus sondern nur auf die Kopie in der Variablen varlue.
    foreach ($zahlenarray as $value)
        $value++;

    // Folgende Ausgabe zeigt, dass die im Array gespeicherten Daten nicht
    // verändert wurden.
    foreach ($zahlenarray as $value)
        echo $value . ($value == end ($zahlenarray) ? '<br>' : ', ');

    // Der nächste Abschnitt nutzt keine Kopien der Werte, sondern referenziert
    // die Array-Werte, wodurch die Speicherstellen im Array direkt angesprochen
    // und entsprechende verändert werden.
    foreach ($zahlenarray as &$value)
        $value++;

    // Nun nocheinmal das Array ausgeben, in dem das gewünschte Ergebnis
    // zu sehen ist.
    foreach ($zahlenarray as &$value)
        echo $value . ($value == end ($zahlenarray) ? '<br>' : ', ');
?>
[an error occurred while processing this directive] ) ausgegeben. Durch die // verkürzte If-Abfrage wird bei jedem Schleifendurchgang geprüft, // ob das Letzte Element erreicht wurde. In diesem Falle wird // der Zeilenumbruch, statt des Komma und dem darauf folgenden // Leerzeichen ausgegeben. Dies funktioniert natürlich nur solange // es den letzten Wert im Array nicht mehrfach gibt echo $value . ($value == end ($zahlenarray) ? '
' : ', '); // Folgender Versuch die Werte im Array zu ändern klappt nicht. Das liegt // daran, dass stets eine Kopie des jeweiligen Array-Elements der Variablen // value zugewiesen wird. Änderungen wirken sich deshalb nicht auf das // Array aus sondern nur auf die Kopie in der Variablen varlue. foreach ($zahlenarray as $value) $value++; // Folgende Ausgabe zeigt, dass die im Array gespeicherten Daten nicht // verändert wurden. foreach ($zahlenarray as $value) echo $value . ($value == end ($zahlenarray) ? '
' : ', '); // Der nächste Abschnitt nutzt keine Kopien der Werte, sondern referenziert // die Array-Werte, wodurch die Speicherstellen im Array direkt angesprochen // und entsprechende verändert werden. foreach ($zahlenarray as &$value) $value++; // Nun nocheinmal das Array ausgeben, in dem das gewünschte Ergebnis // zu sehen ist. foreach ($zahlenarray as &$value) echo $value . ($value == end ($zahlenarray) ? '
' : ', '); ?>

1, 2, 3, 4, 5
1, 2, 3, 4, 5
2, 3, 4, 5, 6

PHP Foreach Key und Value: Iteration über die Schlüssel-Werte-Paare

Der Zugriff auf die Key-Value-Paare soll im nächsten Beispiel gezeigt werden. Bei der Initialisierung eines Arrays werden im Prinzip auch Key und Value für jedes einzelne Element im Array vergeben. Ohne Angabe eines bestimmten Keys wird das Array einfach automatisch mit Integer-Keys angelegt, wobei die Elemente – angefangen mit dem Key 0 für das Erste – automatisch durchnummeriert werden. Darüber hinaus kann mit der Foreach-Schleife auf beliebige Key-Value-Paare, die durch ein assoziatives Array definiert wurden, zugegriffen werden.

<?php
    // Variable definieren und zugleich die initialen Elemente im Array
    // ablegen. Die Key-Werte (Indexe) der Array-Elemente werden dabei
    // automatisch vergeben.
    $paare = array ('Inhalt 1', 'Inhalt 2', 'Inhalt 3');
    // Iteration über die Elemente des Arrays, wobei die Variablen key und
    // value bei jedem Iterationsschritt durch den Schlüssel bzw. den Inhalt
    // an der entsprechenden Indexposition belegt wird.
    foreach ($paare as $key => $value)
        echo 'Key: ' . $key . ' enth&auml;lt den Wert ' . $value . '<br>';

    // Array erneut mit Elementen initialisieren
    // Diesmal erfolgt die Initialisierung mit einzelnen Schlüssel-Werte-Paaren
    // (mit key und value), wodurch ein assoziatives Array abgebildet wird.
    $paare = array ('Variable 1' => 'Wert 1',
            'Variable 2' => 'Wert 2',
            'Variable 3' => 'Wert 2');
    // Mit dieser Aufteilung in Key und Value gehen wir widerum auf die
    // einzelnen Elemente los und enthalten die Paare aus definiertem Schlüssel
    // und dem jeweiligen Inhalt des Array-Index. Ein Reset erübrigt sich an
    // dieser Stelle, da der Positionszeiger durch foreach automatisch
    // zurückgesetzt wird.
    foreach ($paare as $key => $value)
        echo 'Key: ' . $key . ' enth&auml;lt den Wert ' . $value . '<br>';
?>
[an error occurred while processing this directive] $value) echo 'Key: ' . $key . ' enthält den Wert ' . $value . '
'; // Array erneut mit Elementen initialisieren // Diesmal erfolgt die Initialisierung mit einzelnen Schlüssel-Werte-Paaren // (mit key und value), wodurch ein assoziatives Array abgebildet wird. $paare = array ('Variable 1' => 'Wert 1', 'Variable 2' => 'Wert 2', 'Variable 3' => 'Wert 2'); // Mit dieser Aufteilung in Key und Value gehen wir widerum auf die // einzelnen Elemente los und enthalten die Paare aus definiertem Schlüssel // und dem jeweiligen Inhalt des Array-Index. Ein Reset erübrigt sich an // dieser Stelle, da der Positionszeiger durch foreach automatisch // zurückgesetzt wird. foreach ($paare as $key => $value) echo 'Key: ' . $key . ' enthält den Wert ' . $value . '
'; ?>

Key: 0 enthält den Wert Inhalt 1
Key: 1 enthält den Wert Inhalt 2
Key: 2 enthält den Wert Inhalt 3
Key: Variable 1 enthält den Wert Wert 1
Key: Variable 2 enthält den Wert Wert 2
Key: Variable 3 enthält den Wert Wert 2

PHP Foreach und Break: Vorzeitiger Abbruch der Foreach-Schleife

Im letzten Beispiel soll das vorzeitige Abbrechen der Foreach-Schleife mit der Break-Anweisung thematisiert werden. Break kann nicht allein zum Beenden eines Falles im Switch-Statement verwendet werden – hier wird jeder „Case” mit einem Break beendet, wenn die darauf folgenden Anweisungen nicht mehr ausgeführt werden sollen. Aber auch mit einer einfachen If-Abfrage kann die Verarbeitung der Foreach-Schleife beendet werden, wenn bestimmte Abbruchkriterien zutreffen.

<?php
    // Variable zur Speicherung eines Vergleichswertes
    $aktuelle_major_version = 5;

    // Die Foreach-Schleife kann nicht allein mit einem in einer Variablen
    // gespeicherten Array gefüttert werden sondern auch mit dynamischen
    // Arrays arbeiten. Hier wird ein Array dynamisch für die Foreach-Schleife
    // erzeugt. Nach Ausführung der Schleife wird das Array zerstört. Die
    // im Array enthaltenen Elemente werden nacheinander aus dem Array
    // entnommen und in der Variable php zwischengespeichert.
    foreach (array (1, 2, 3, 4, 5, 6, 7) as $php) {
        // Wenn die in php gespeicherte Versionsnummer die aktuelle
        // übersteigt, wird die Foreach-Schleife abgebrochen.
        if ($php > $aktuelle_major_version)
            // Der hier angegebene Parameter 1 kann auch entfallen,
            // da der Abbruch nur über eine Schleifenebene erfolgen
            // soll.
            break 1;
        // Wurde die Schleife nicht abgebrochen, so folgt eine Ausgabe,
        // mit einem abschießenden Zeilenumbruch (mittels HTML-Code des
        // BR-Tags).
        echo 'PHP ' . $php . '.x gibt es!<br>';
    }

    // Folgendes Beispiel nutzt wieder ein Array mit Zahlenwerten, durch das
    // mittels Foreach iteriert wird, wobei die einzelnen Werte aus dem Array
    // in der Variablen element landen.
    foreach (array (1, 2, 3, 4, 5) as $element) {
        // Mit diesem Switch-Statement soll die umschließende Foreach-Schleife
        // gesteuert werden.
        switch ($element) {
            // Enthält die Variable element den Wert 3, so wird die
            // Arrayverarbeitung durch Foreach beendet. Hierzu wird
            // break mit dem Parameter 2 aufgerufen. Wird break ohne
            // oder mit dem Parameter 1 aufgerufen, so führt dies
            // lediglich zur Beendigung des Switch-Statements. Mit
            // Angabe von 2 wird der Case und die übergeordnete
            // Verarbeitung von Foreach abgebrochen.
            case 3:
                break 2;
            // In allen anderen Fällen soll das Element ausgegeben
            // werden.
            default:
                echo $element . ' ... ';
        }
    }
    echo '<br>';

    // Auch hier wird wieder eine dynamische Werteliste verarbeitet
    foreach (array (-1, 1, 2, 3, 4, 5, 6, 7) as $php) {
        // Fallunterscheidungen wieder durch Switch-Case-Statement
        switch ($php) {
            // Abbruch von Switch, wenn die Variable -1 enthält
            case -1:
                break;
            // Wenn die aktuelle Version erreicht ist, dann wird dies
            // entsprechend gemeldet und danach das Switch und auch
            // das Foreach-Statement beendet.
            case $aktuelle_major_version:
                echo 'PHP-Version ' . $php . ' ist die letzte existierende Major-Version!<br>';
                break 2;
            // In allen andere Fällen soll einfach nur eine Ausgabe erfolgen
            default:
                echo 'PHP ' . $php . ' existiert!<br>';
        }
    }
?>
[an error occurred while processing this directive] $aktuelle_major_version) // Der hier angegebene Parameter 1 kann auch entfallen, // da der Abbruch nur über eine Schleifenebene erfolgen // soll. break 1; // Wurde die Schleife nicht abgebrochen, so folgt eine Ausgabe, // mit einem abschießenden Zeilenumbruch (mittels HTML-Code des // BR-Tags). echo 'PHP ' . $php . '.x gibt es!
'; } // Folgendes Beispiel nutzt wieder ein Array mit Zahlenwerten, durch das // mittels Foreach iteriert wird, wobei die einzelnen Werte aus dem Array // in der Variablen element landen. foreach (array (1, 2, 3, 4, 5) as $element) { // Mit diesem Switch-Statement soll die umschließende Foreach-Schleife // gesteuert werden. switch ($element) { // Enthält die Variable element den Wert 3, so wird die // Arrayverarbeitung durch Foreach beendet. Hierzu wird // break mit dem Parameter 2 aufgerufen. Wird break ohne // oder mit dem Parameter 1 aufgerufen, so führt dies // lediglich zur Beendigung des Switch-Statements. Mit // Angabe von 2 wird der Case und die übergeordnete // Verarbeitung von Foreach abgebrochen. case 3: break 2; // In allen anderen Fällen soll das Element ausgegeben // werden. default: echo $element . ' ... '; } } echo '
'; // Auch hier wird wieder eine dynamische Werteliste verarbeitet foreach (array (-1, 1, 2, 3, 4, 5, 6, 7) as $php) { // Fallunterscheidungen wieder durch Switch-Case-Statement switch ($php) { // Abbruch von Switch, wenn die Variable -1 enthält case -1: break; // Wenn die aktuelle Version erreicht ist, dann wird dies // entsprechend gemeldet und danach das Switch und auch // das Foreach-Statement beendet. case $aktuelle_major_version: echo 'PHP-Version ' . $php . ' ist die letzte existierende Major-Version!
'; break 2; // In allen andere Fällen soll einfach nur eine Ausgabe erfolgen default: echo 'PHP ' . $php . ' existiert!
'; } } ?>

PHP 1.x gibt es!
PHP 2.x gibt es!
PHP 3.x gibt es!
PHP 4.x gibt es!
PHP 5.x gibt es!
1 ... 2 ...
PHP 1 existiert!
PHP 2 existiert!
PHP 3 existiert!
PHP 4 existiert!
PHP-Version 5 ist die letzte existierende Major-Version!

[an error occurred while processing this directive]
Letzte Posts aus unserem Forum

Probleme mit iphone

Hallo, ich habe ein Problem bei der Darstellung einer Webseite. In allen Browsern hat das bisher bestens funktioniert auer beim iPhone und iPad, wo ... » mehr

von Finlay am Dienstag, 10. Juli 2012 19:45 in JavaScript - noch nicht beantwortet

Stream musik

Hallo, ich bin auf der Suche nach einem Script, mit dem ich einen Leser fr Audio-Spuren in eine Html-Webseite einfgen kann. Ich brauche dabei ... » mehr

von Finlay am Sonntag, 22. Januar 2012 22:52 in JavaScript - bisher 2 Antworten
Letzter Beitrag: Dienstag, 8. Mai 2012 16:04 von maharadja

ich habe das mal mit jplayer probiert und bei mir gings ... » mehr

Byte Array PDF im Browser anzeigen

Hallo, ich bekomme von einem Webservice ein PDF als Byte Array. Mit einem JsonP Request habe ich das Byte Array so wie es ist (als Array von Bytes) ... » mehr

von TiloS am Mittwoch, 11. April 2012 17:37 in JavaScript - noch nicht beantwortet

berbelnd effect in javascript gallerie

ich habe hier einie gallerie die funktioniert problem los aber hat noch kein ber belnd effect jedoch wrde ich diesen gerne einfgen aber ich habe ... » mehr

von faebe am Freitag, 20. Januar 2012 20:19 in JavaScript - noch nicht beantwortet

XML per JavaScript verarbeiten - IE

Hallo! Vielen Dank fr das super kommentierte Script-Beispiel zur Weiterverarbeitung von XML-Dateien per JavaScript: ... » mehr

von gn0me am Freitag, 11. Mrz 2011 19:03 in JavaScript - noch nicht beantwortet

¬ Menu

¬ Gratis Download

[an error occurred while processing this directive]

¬ Tutorials

¬ Seminare



[an error occurred while processing this directive] [an error occurred while processing this directive]

¬ Insolvenzrecht