PHP, weiter; auf foreach(){ foreach(){

Lesezeit: 2 Minuten

Gibt es eine Möglichkeit, mit externem foreach fortzufahren, falls der interne foreach eine Anweisung erfüllt?

Zum Beispiel

foreach($c as $v)
{
    foreach($v as $j)
    {
        if($j = 1)
        {
            continue; // But not the internal foreach. the external;
        }
    }
}

  • sieht so aus, als ob Sie können … Sie müssen angeben, wie viele Ebenen fortgesetzt werden sollen … in Ihrem Fall fortfahren 2; mehr Infos hier php.net/manual/en/control-structures.continue.php

    – Katalin

    20. Oktober 2011 um 10:44 Uhr


  • Wenn Sie den tatsächlichen Fall mit den Daten und der Ursache erläutern, erhalten Sie eine angemessenere Antwort. -1 bisher, für die extreme Prägnanz und Vagheit.

    – Ihr gesunder Menschenverstand

    20. Oktober 2011 um 10:45 Uhr


  • -1 auch, weil vor dem Stellen der Frage nicht viel recherchiert wurde. Nicht einmal ein Blick ins Handbuch.

    – hakre

    20. Oktober 2011 um 10:59 Uhr

  • Unabhängig von SO-Standards ist dies das beste Ergebnis bei Google. Daher biete ich folgendes an… Das könnte ein Code-Geruch sein. In einigen Fällen kann es eine gute Idee sein, die innere Schleife in eine andere Funktion/Methode einzubinden.

    – musicin3d

    13. Februar 2020 um 19:26 Uhr

Versuch mal das, sollte funktionieren:

continue 2;

Aus dem PHP-Handbuch:

Continue akzeptiert ein optionales numerisches Argument, das angibt, wie viele Ebenen von umschließenden Schleifen bis zum Ende übersprungen werden sollen.

hier der in den beispielen (genau 2.) beschriebene code den du benötigst

Versuche dies: continue 2; Laut Handbuch:

continue accepts an optional numeric argument which tells it how many levels of enclosing loops it should skip to the end of. 

Für diese Situation stehen zwei Lösungen zur Verfügung, entweder verwenden break oder continue 2. Beachten Sie, dass bei Verwendung von break zum Ausbrechen aus der internen Schleife jeglicher Code nach der inneren Schleife weiterhin ausgeführt wird.

foreach($c as $v)
{
    foreach($v as $j)
    {
        if($j = 1)
        {
            break;
        }
    }
    echo "This line will be printed";
}

Die andere Lösung ist zu verwenden continue gefolgt von der Anzahl der Ebenen zurück, von denen aus fortgefahren werden soll.

foreach($c as $v)
{
    foreach($v as $j)
    {
        if($j = 1)
        {
            continue 2;
        }
    }
    // This code will not be reached.
}

Dies wird bis zu den darüber liegenden Ebenen fortgesetzt (also die äußeren Foreach)

 continue 2

<?php
foreach($c as $v)
{
    foreach($v as $j)
    {
        if($j = 1)
        {
            continue 2; // note the number 2
        }
    }
}
?>

RTM

  • Jede Antwort mit einem Verweis auf continue 2 wurde aus irgendeinem Grund einmal von jemandem herabgestuft …

    – daiskog

    20. Oktober 2011 um 10:49 Uhr

Benutzer-Avatar
TRIG

Versuchen break Anstatt von continue.

Du kannst Folgen break mit einer Ganzzahl, die die Anzahl der Schleifen angibt, aus denen ausgebrochen werden soll.

  • Jede Antwort mit einem Verweis auf continue 2 wurde aus irgendeinem Grund einmal von jemandem herabgestuft …

    – daiskog

    20. Oktober 2011 um 10:49 Uhr

Benutzer-Avatar
Gemeinschaft

musst du verwenden break Anstatt fortzufahren, wenn ich dich richtig verstehe

Hier habe ich eine Erklärung dazu geschrieben: Was versteht man in PHP unter einer Zahl nach “break” oder “continue”?

  • Nein, tut er nicht – er fügt einfach eine Zahl dahinter hinzu continue wie alle anderen schon gesagt haben.

    – daiskog

    20. Oktober 2011 um 10:47 Uhr

1329670cookie-checkPHP, weiter; auf foreach(){ foreach(){

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy