Search code examples
phpforeachlimitstrpos

Limit output in foreach


I want to check in an xml file with CDATA if cities exist. If the cities exist one or more time, then I want to display an input.

I have found several ways to check if the city exists or not, however as it exists several times it display several times.

Both ways below prints out correctly, but I need only one output:

foreach($paradasarray as $parada){
    if (substr_count($parada->localidad, 'Benalmádena') > 0) {
        echo 'Benalmádena Costa';
    }
    if (strpos($parada->localidad, 'Benalmádena') !== false) {
        echo 'Benalmádena Costa';
    }   
}

Both ways outputs like this:
Benalmádena CostaBenalmádena CostaBenalmádena CostaBenalmádena 
CostaBenalmádena CostaBenalmádena CostaBenalmádena CostaBenalmádena 
CostaBenalmádena CostaBenalmádena CostaBenalmádena CostaBenalmádena 
CostaBenalmádena CostaBenalmádena CostaBenalmádena CostaBenalmádena 
CostaBenalmádena CostaBenalmádena CostaBenalmádena CostaBenalmádena 

Solution

  • Multiple ways of doing this.

    1. You could use breaks

    break ends execution of the current for, foreach, while, do-while or switch structure.

    foreach($paradasarray as $parada){
        if (substr_count($parada->localidad, 'Benalmádena') > 0) {
            echo 'Benalmádena Costa';
            break;
        }
        if (strpos($parada->localidad, 'Benalmádena') !== false) {
            echo 'Benalmádena Costa';
            break;
        }   
    }
    
    1. You could set a boolean value before the foreach and change it when benalmadena costa is printed.

    This comes in handy when you dont want the foreach to end.

    $benalmadena=false;
    foreach($paradasarray as $parada){
        if($benalmadena==false){
           if (substr_count($parada->localidad, 'Benalmádena') > 0) {
                echo 'Benalmádena Costa';
                $benalmadena=true;
            }
    
            if (strpos($parada->localidad, 'Benalmádena') !== false) {
                echo 'Benalmádena Costa';
                $benalmadena=true;
            }
        }else{
            //Other code you want to happen even after Benalmadena is printed  
        }
    }