Lektion 26. Arrays og loops

Forberedelse

Formål

  • Lære en masse om loops og arrays

Fælles gennemgang

Fra sidst

Lektien til denne gang

Øvelser

26.1 Arrays

  • Hvorfor er det praktisk med et array frem for individuelle variable
  • Hvilke typer arrays findes
  • Du skal nu gemme nedenstående oplysninger i et array. Hvilken type array vælger du
    • Jeg vil have en liste over alle klubberne i superligaen. AGF, FC Midtjylland….. (unævnlige klubber fra Malmø Vest/København)
    • Jeg har en liste over fornavnene på alle elever i en klasse
    • Jeg vil have en liste med basis oplysninger på elever i en klasse: Fornavn, efternavn, adresse, postnummer og by
    • Jeg har en liste over elever og deres karakterer i informatik. Jeg vil have, at elevens fornavn er primærnøglen

26.2 Dit første array

Lav en ny mappe til dine filer til denne lektion. Tag koden nedenfor og sæt den ind i et dokument.

<!DOCTYPE html>
<html>
<body>
<?php
$cars = array("Volvo", "BMW", "Toyota"); 
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
</body>
</html>
  • Hvad sker der i koden
  • Hvorfor står der $cars[1, hvad står 1-tallet for
  • Tilføj 2 biler mere til dit array. Jeg foreslår Ferrari og Tesla, men du bestemmer 🙂
  • Udskriv de 2 biler
  • Nu siger vi, at du vil udskrive lige netop BMW. Lav en echo-sætning, hvor du skriver: Mit favorit bilmærke er BMW. Du skal selvfølgelig hente navnet BMW fra arrayet

26.3 Udskriv et array 1

Kopier koden over til et dokument. Tilføj en kodelinje, der skriver: “Her er en liste over nogle bilmærker: …. (udskriv alle bilerne fra arrayet) ..”

<!DOCTYPE html>
<html>
<body>
<?php
$cars = array("Volvo", "BMW", "Toyota", "Citroen", "Tesla", "Mazda", "Aston Martin"); 
?>
</body>
</html>

26.4 Udskriv et array 2

I stedet for at udskrive elementer i et array enkeltvis, så kan vi gøre det noget smartere vha. et loop. I praksis bruger vi næsten altid loops. Sæt koden nedenfor ind i et dokumentet. Du skal undersøge, hvad koden kan

<!DOCTYPE html>
<html>
<body>

<?php
$cars = array("Volvo", "BMW", "Toyota");
// sort($cars);

$clength = count($cars);
for($x = 0; $x < $clength; $x++) {
  echo $cars[$x];
  echo "<br>";
}
?>

</body>
</html>
  • Hvad kan koden
    • Hvad gør koden $clength = count($cars);
    • Forklar, hvordan koden her fungerer: for($x = 0; $x < $clength; $x++)
    • Forklar, hvad der er hvad, og brug begreber for koden: F.eks. variable, sekvens mv.
  • Jeg har sat 2 streger foran sort($cars);. Hvad gør de 2 streger?
  • Fjern de 2 streger. Hvad sker der med rækkefølgen af bilmærkerne i din udskrift
  • Erstat koden sort($cars); med koden rsort($cars);. Hvad sker der med rækkefølgen af bilmærkerne i din udskrift

26.5 Små tabeller

Inden du går i gang: Gem dit arbejde, du skal bruge det i det næste opgavesæt. Dvs. du må godt slette dit arbejde, men så kommer du til at lave opgaven her 2 gange.

Fik du aldrig lært de små tabeller i folkeskolen, dvs. 1-tabellen til og med 10-tabellen ? Fortvivl ikke, du får en ny chance nu :-)! Kopier koden herunder ind i en selvstændig PHP fil. Prøv koden af

<!DOCTYPE html>
<html>
<body>
<h1>Her er 1-tabellen</h1>
<?php
$tal = 1;
for($x = 0; $x < 10; $x++) {
  echo $tal;
  echo "<br>";
  $tal = $tal + 1;
}
?>
</body>
</html>
  • Forklar, hvordan koden fungerer
  • Hvad gør koden $x++
  • Hvad gør koden $tal = $tal + 1;
  • Erstat koden $tal = $tal + 1 med $tal++. Gør det nogen forskel
    • Hjælp: Lige efter sæt en linje ind: echo “Tallet tal = ” . $tal . “<br>”;
    • Hvordan hjælper linjen os, og kan vi bruge det i andre sammenhænge
  • Tag en kopi af koden og lav den om, så den i stedet for 1-tabellen nu viser 2-tabellen
  • Udvid koden, så den både kan vise 1, 2 og 3 tabellen

26.6 WHILE loop

Kopier koden herunder ind i en selvstændig PHP fil, gerne hos W3schools. Prøv koden af.

<!DOCTYPE html>
<html>
<body>
<h1>Prøv et while-loop</h1>
<?php
$x = 0;

while($x <= 100) {
  echo "The number is: $x <br>";
  $x+=10;
}
?> 
</body>
</html>
  • Hvad gør koden
  • Hvad er forskellen til FOR-loopet
    • I hvilke situationer kunne et WHILE loop en bedre løsning end et FOR-loop
  • Ændr koden, så den i stedet for at springe med 10 pr. loop kun springer med 5 og vis resultatet
  • Ændr koden, så den springer med 17 og løber til 340. Får den tallet 340 med?
  • Ændr koden, så den starter ved 170 i stedet for 0, men stadigvæk hopper med 17 op til 340

Her er koden til et DO-WHILE loop. Sæt det ind,og få det til at virke

<!DOCTYPE html>
<html>
<body>
<h1>Prøv et do-while-loop</h1>
<?php
$x = 1;

do {
  echo "The number is: $x <br>";
  $x++;
} while ($x <= 5);
?> 
</body>
</html>
  • Hvad er forskellen mellem et WHILE og et DO-WHILE loop
  • Ændr koden, så den lige som i den første WHILE kode tæller op til 100 og springer med 10

26.7 Kundeliste

Her er en liste over nogle tilfældige kunder: Kim Kunde, Rikke Rabat, Karen Krejler (spørg, hvis du ikke ved, hvad en krejler er, det er et jysk ord), Danny Discount, Pia Procenter og Inge Inkasso.

  • Lav et indekseret array og kald det $kunde med alle kunderne
  • Udskriv arrayet i den rækkefølge, de er skrevet ind
  • Udskriv arrayet i alfabetisk rækkefølge fra A – Å, dvs. i stigende orden
  • Udskriv arrayet i alfabetisk rækkefølge fra Å – A, dvs. i faldende orden

Tip: Du kan få god hjælp hos W3schools på https://www.w3schools.com/php/php_arrays_sort.asp.

26.8 Ekstra opgave. Break