Rompre si et foreach
P粉651109397
P粉651109397 2023-08-28 11:32:39
0
2
605
<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粉651109397
P粉651109397

répondre à tous(2)
P粉564192131
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.

P粉729436537

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 :

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal