2011-05-19 15:27 #0 av: [Fibbe]

Det är ganska vanligt att behöva upprepa saker fler gånger när man programmerar. För att inte behöva skriva samma sak om och om igen finns det väldigt bra och enkla sätt att utföra repetitioner. Detta kallas bland annat för loop, repetering, upprepning eller iteration.

for-loopen

Det första exemplet på upprepning, vi ska lära oss, är for-loopen. Med denna loop kan vi repetera något det antal gånger vi vill. Så här ser for-loopen ut:

for ($i = 0; $i < 7; $i++)
{
echo "Hej";
}

Koden ovan kommer att generera följande:

HejHejHejHejHejHejHej

Om vi går igenom loopen, del för del, kan vi förstå varför mycket enkelt. Första delen, $i = 0, sätter att variabeln $i ska vara lika med 0 när loopen startar. Nästa del, $i < 7, betyder att loopen ska fortsätta att upprepa så länge detta påstående är sant. Alltså så länge $i är mindre än 7 kommer vi att skriva Hej. Sista delen, $i++, är ett förkortat skrivsätt av, $i = $i + 1;. Med andra ord så ökar vi variabeln $i med 1 varje gång loopen körs.

Vi kan visa detta genom att skriva ut variabeln $i brevid varje Hej.

for ($i = 0; $i < 7; $i++)
{
echo "(i=$i)Hej ";
}

Detta ger följande:

(i=0)Hej (i=1)Hej (i=2)Hej (i=3)Hej (i=4)Hej (i=5)Hej (i=6)Hej

Programmet tänker på följande sätt:

Är 0 < 7? - Ja, vi skriver "Hej" och plussar på 1 på $i

Är 1 < 7? - Ja, vi skriver "Hej" och plussar på 1 på $i

Är 2 < 7? - Ja, vi skriver "Hej" och plussar på 1 på $i

Är 3 < 7? - Ja, vi skriver "Hej" och plussar på 1 på $i

Är 4 < 7? - Ja, vi skriver "Hej" och plussar på 1 på $i

Är 5 < 7? - Ja, vi skriver "Hej" och plussar på 1 på $i

Är 6 < 7? - Ja, vi skriver "Hej" och plussar på 1 på $i

Är 7 < 7? - Nej! Vi skriver inte ut något och avslutar

 

while-loopen

Det finns en annan loop som heter while. While betyder "medan", och det beskriver denna loop väldigt bra. Denna loop repeterar medan ett påstående är sant.

Vi kan använda while-loopen precis på samma sätt som en for-loop så här:

$i = 0;

while ($i < 7)
{
echo "Hej";
$i++;
}

Denna kod ger exakt samma resultat som det första exemplet på for-loopen. Det vi först gör är att sätta en variabel, $i, att vara lika med 0 redan ovanför vår loop. Sedan säger vi åt loopen att, medan $i < 7, så skriver vi Hej och plussar på 1$i.

While-loopen är dock mycket mer dynamisk än for-loopen. Vi behöver inte räkna upp till ett specifikt värde med while. Det räcker med ett påstående som blir falsk inom överskådlig framtid. Blir påståendet aldrig falskt kommer loopen att snurra i all evighet och vi får ett felmeddelande.

 

foreach-loopen

foreach-loopen hjälper oss att loopa igenom en array. Det går givetvis att loopa igenom en array med de vanliga for- eller while-looparna. Men har vi gjort en array, med namn istället för siffror, som index blir det lite knepigare. for each, betyder för varje och det är precis vad loopen gör, den loopar ett varv för varje värde i en array.

Exempel:

$myArray = array("Låda_1" => "Innehåll 1",
"Låda_2" => "Innehåll 2",
"Låda_3" => "Innehåll 3",
"Låda_4" => "Innehåll 4");

foreach ($myArray as $content)
{
echo $content . "<br>";
}

Ovanstående ger följande:

Innehåll 1
Innehåll 2
Innehåll 3
Innehåll 4

Det finns en till väldigt användbar funktion i foreach-loopen. Vi kan nämligen få veta vilken låda, vilket index, varje innehåll finns i.

Exempel:

$myArray = array("Låda_1" => "Innehåll 1",
"Låda_2" => "Innehåll 2",
"Låda_3" => "Innehåll 3",
"Låda_4" => "Innehåll 4");

foreach ($myArray as $box => $content)
{
echo "$box innehåller: $content <br>";
}

Ovanstående ger följande:

Låda_1 innehåller: Innehåll 1
Låda_2 innehåller: Innehåll 2
Låda_3 innehåller: Innehåll 3
Låda_4 innehåller: Innehåll 4

 

Prova själv

Vi har följande arrayer:

$car1 = array("max_speed" => "340km/h",
"style" => "Snygg");

$car2 = array("max_speed" => "110km/h",
"style" => "Ful");

$car3 = array("max_speed" => "50km/h",
"style" => "Superdupersnygg");

$cars = array("bil1" => $car1,
"bil2" => $car2,
"bil3" => $car3);

Försök genom att loopa ut värderna ut variabeln $cars få följande resultat:

bil1:
speed: 340km/h
style: Snygg

bil2:
speed: 110km/h
style: Ful

bil3:
speed: 50km/h
style: Superdupersnygg

Tips och diskussion den i här tråden

 

Nästa artikel i serien »