några sidor på nätet om PHP programmering

Sök efter  
Börja här Uppgifter Testa dig själv Tips Sidokarta mm. Länkar Sök

Loopar Felhantering

1.3.1 Loopar

while

För att loopa ett okänt antal varv kan man använda while. Nedan visas ett exempel på detta:

<?php
    
# slumplal mellan 1 och 6
    
mt_srand( time() );  
    
$nummer = mt_rand( 1, 6);  

    echo
"Skall kasta tärning tills jag får en sexa...<br />";
    while (
$nummer != 6 )
    {
        echo
"Aj då en " . $nummer . "a<br />";        
        
$nummer = mt_rand( 1, 6 );  
    }
    echo
"<b>Nu fick jag äntligen sexan!</b><br />";
?>
Listning 1.3.1.1 - samples/s12.php

Skall kasta tärning tills jag får en sexa...
Aj då en 3a
Nu fick jag äntligen sexan!
Resultat av listning 1.3.1.1

do

En variant på samma tema är konstruktionen do - while. Nedanstående program gör samma sak som föregående med ett viktigt undantag: Om det först slumptalet är en sexa kommer programmet att visa Aj då en 6a, för att sedan avsluta loopen.

<?php
    
# slumplal mellan 1 och 6
    
mt_srand( time() - 1 );  

    echo
"Skall kasta tärning tills jag får en sexa...<br />";
    do
    {
        
$nummer = mt_rand( 1, 6 );  
        echo
"Aj då en " . $nummer . "a<br />";        
    
    } while (
$nummer != 6 );
    
    echo
"<b>Nu fick jag äntligen sexan!</b><br />";
?>
Listning 1.3.1.2 - samples/s13.php

Skall kasta tärning tills jag får en sexa...
Aj då en 4a
Aj då en 3a
Aj då en 3a
Aj då en 2a
Aj då en 3a
Aj då en 5a
Aj då en 5a
Aj då en 5a
Aj då en 3a
Aj då en 4a
Aj då en 3a
Aj då en 5a
Aj då en 6a
Nu fick jag äntligen sexan!
Resultat av listning 1.3.1.2

for

<?php
    
# slumplal mellan 1 och 6
    
mt_srand( time() - 1 );  

    echo
"Skall kasta tärning 5 gånger...<br />";
    for (
$antal = 0; $antal < 5; $antal = $antal + 1 )
    {
        
$nummer = mt_rand( 1, 6 );  
        if (
$nummer != 6)
        {
            echo
"Aj då en " . $nummer . "a<br />";        
        }
        else
        {
            echo
"<b>Nu fick jag sexan!</b><br />";
        }
    }
    
    echo
"<br />Skall räkna till tio ";
    for (
$antal = 1; $antal <= 10; $antal++ )
    {
        echo
$antal . " ";
    }
    echo
" klar";
?>
Listning 1.3.1.3 - samples/s14.php

Skall kasta tärning 5 gånger...
Aj då en 4a
Aj då en 3a
Aj då en 3a
Aj då en 2a
Aj då en 3a

Skall räkna till tio 1 2 3 4 5 6 7 8 9 10 klar
Resultat av listning 1.3.1.3

foreach

För arrays finns det en speciell foreach konstruktion. Jag kommer att behandla arrays separat, men nedan är ett litet exempel.

<?php

    $personer
["Anders"] = "And";
    
$personer["Kalle"] = "Anka";
    
$personer["Donald"] = "Duck";
    foreach (
$personer as $förnamn=>$efternamn )
    {
        echo
$förnamn . " " . $efternamn . "<br />";
    }
    
$nummer[] = 30;
    
$nummer[] = 20;
    
$nummer[] = 10;
    foreach (
$nummer as $index=>$värde )
    {
        echo
$index . " " . $värde . "<br />";
    }
?>
Listning 1.3.1.4 - samples/s21.php

Anders And
Kalle Anka
Donald Duck
0 30
1 20
2 10
Resultat av listning 1.3.1.4

break

För att avbryta en loop kan man använda break

<?php
    
# borde loopa 10000 varv
    
for ( $i = 0; $i < 1000; $i++)
    {
        
# men avbryt redan vid det 5:e
        
if ( $i > 5 )
        {
            break;
        }
        echo
"Varv " . $i . "<br />";
    }

?>
Listning 1.3.1.5 - samples/s19.php

Varv 0
Varv 1
Varv 2
Varv 3
Varv 4
Varv 5
Resultat av listning 1.3.1.5

continue

För att hoppa över resten av loopen och direkt fortsätta med nästa varv kan man avända continue.

<?php
    
# loopa 10 varv
    
for ( $i = 0; $i < 10; $i++)
    {
        
# om det är "vartannat" varv så skippar vi resten
        
if ( $i % 2 == 0 )
        {
            continue;
        }
        echo
"Varv " . $i . "<br />";
    }

?>
Listning 1.3.1.6 - samples/s20.php

Varv 1
Varv 3
Varv 5
Varv 7
Varv 9
Resultat av listning 1.3.1.6

   Börja härKontrollsatserLoopar