Maison  >  Questions et réponses  >  le corps du texte

Rompre si et foreach

<p>J'ai une boucle foreach et une instruction if. Je dois enfin sortir du foreach si une correspondance est trouvée. </p> <pre class="brush:php;toolbar:false;">foreach ($equipxml as $equip) { $current_device = $equip->xpath("nom"); si ($current_device[0] == $device) { // Trouvé une correspondance dans le fichier. $nodeid = $equip->id; <sortir de if et foreach ici> } }</pré> <p><br /></p>
P粉651109397P粉651109397441 Il y a quelques jours587

répondre à tous(2)je répondrai

  • P粉564192131

    P粉5641921312023-08-29 09:28:59

    foreach($equipxml as $equip) {
        $current_device = $equip->xpath("name");
        if ( $current_device[0] == $device ) {
            // found a match in the file            
            $nodeid = $equip->id;
            break;
        }
    }

    Utilisez simplement break. c'est ça.

    répondre
    0
  • P粉729436537

    P粉7294365372023-08-29 00:47:33

    if n'est pas une structure cyclique, vous ne pouvez donc pas la "casser".

    Cependant, vous pouvez le faire en appelant simplement break 来突破 foreach . Dans votre exemple cela a l'effet souhaité :

    $device = "wanted";
    foreach($equipxml as $equip) {
        $current_device = $equip->xpath("name");
        if ( $current_device[0] == $device ) {
            // found a match in the file            
            $nodeid = $equip->id;
    
            // will leave the foreach loop immediately and also the if statement
            break;
            some_function(); // never reached!
        }
        another_function();  // not executed after match/break
    }

    Juste pour le garder intact pour toute autre personne qui tombe sur cette question et cherche une réponse.

    break prend des arguments facultatifs définissant combien de structures de boucle il doit briser. Exemple :

    foreach (['1','2','3'] as $a) {
        echo "$a ";
        foreach (['3','2','1'] as $b) {
            echo "$b ";
            if ($a == $b) { 
                break 2;  // this will break both foreach loops
            }
        }
        echo ". ";  // never reached!
    }
    echo "!";

    Résultat :

    répondre
    0
  • Annulerrépondre