4.7. Loops

Syntaxen for for, while og do-while loops er som i Perl og C, og er vist i det følgende eksempel:


<pre>
<?php
   echo "\n\nFor loop:\n";

   echo "2-tabellen: ";
   for ($i=0;$i<10;$i++) echo 2*$i." ";

   echo "\n\nWhile loop:\n";

   $i=42;
   while ($i>30) 
       { 
         echo $i." ";
         $i--;
       }

   echo "\n\ndo-while loop:\n";

   $i=22;
   do
       { 
         echo $i." ";
         $i-=2;
       }
   while ($i>30);
?>
</pre>

Udskriver:
For loop:
2-tabellen: 0 2 4 6 8 10 12 14 16 18 

While loop:
42 41 40 39 38 37 36 35 34 33 32 31 

do-while loop:
22

Loops kan afbrydes med break . break hopper straks til slutningen af loopet uden at udføre koden indtil da, til forskel så vil continue straks hoppe til starten af loopet. Begge kommandoer kan modtage et heltal argument, der er antallet af loops der skal brydes ud af. Følgende er et uhyre kryptisk eksempel der bruger både break og continue:


<pre>
<?php
   echo "Continue og break:\n";

   $i=42;
   while ($i!=119)
      {
        do
          {
            $i-=17;
         
            if ($i == 52) { break 2;}
            if (5*$i % 13==0) break;
          }  
        while ($i>0);

        do
          {
            $i+=19;
            if (7*$i % 13==0) break;
          }  
        while ($i<101);

        if ($i % 112 == 0) continue;

        echo $i." ";
        $i++;
      }
?>
</pre>

Udskriver:
105 101 114 108 104 119

En tricky opgave i ovenstående eksempel er at finde ud af om koden afsluttes ved at hoppe ud af et break udtryk, eller fordi while udtrykket ikke længere er sandt?