break out of if and foreach break out of if and foreach php php

break out of if and foreach


if is not a loop structure, so you cannot "break out of it".

You can, however, break out of the foreach by simply calling break. In your example it has the desired effect:

$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 and also the if statement        break;        some_function(); // never reached!    }    another_function();  // not executed after match/break}

Just for completeness for others that stumble upon this question looking for an answer..

break takes an optional argument, which defines how many loop structures it should break. Example:

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

Resulting output:

1 3 2 1 !


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

Simply use break. That will do it.


A safer way to approach breaking a foreach or while loop in PHP is to nest an incrementing counter variable and if conditional inside of the original loop. This gives you tighter control than break; which can cause havoc elsewhere on a complicated page.

Example:

// Setup a counter$ImageCounter = 0;// Increment through repeater fieldswhile ( condition ):  $ImageCounter++;   // Only print the first while instance   if ($ImageCounter == 1) {    echo 'It worked just once';   }// Close while statementendwhile;