PHP tutorial, lær å loope mellom arrays med for og foreach

Her skal du lære å loope. Loope er enkelt å greit å utføre en oppgave igjen og igjen, basert på kriterier du spesifiserer. Et eksempel hvor du har vært borte i en loop, er når du setter mp3-spilleren din til å gjenta en sang eller samling av mp3-filer. Kriteriet som må oppfylles før mp3-spilleren slutter å spille sangene er at du ber den om det.

For å loope i PHP har man tre forskjellige måter å definere looper på. Disse er for. for brukes som oftest når man looper gjennom arrays med index keys (integers). Videre har man foreach som brukes for å loope gjennom associative arrays. Til slutt har man while. while loops brukes ofte for å loope gjennom data man har hentet ut fra en database, feks MySQL.

I denne videoen tar vi kun opp looping med for og foreach, men vil i en senere video også bruke while for å loope gjennom informasjon vi henter ut fra MySQL.

I denne PHP tutorialen skal vi

  • Loope for å loope
  • Loope mellom en array med index keys
  • Loope mellom en associative array
  • Loope mellom en multi dimensional og mixed array

En multi dimensional og mixed array, er en array som inneholder arrayer, der nøklene kan være assosiative eller indekser.

Loop med for og foreach i PHP

Du har ikke installert Flash på datamaskinen din. Du trenger minimum flash 8 for å kunne se denne videoen.

Eksemplene nedenfor er digersjoner til videotutorialen i PHP. Det anbefales at du ser gjennom eksemplene selvom du har lest videoen.

for loops

for løkker brukes som du så i videoen for å loope gjennom arrays med index nøkler, eller for å gjenta en operasjon gjentatte ganger.

<?php
// Skriv ut $i til skjerm inntil
// $i ikke er lavere enn 10 lenger
for ($i = 0; $i < 10; $i++) {
  print
$i . '<br>';
}
?>

Loope gjennom en indexed array

Skal man loope gjennom en array med indeksnøkler, så er det viktig at man vet hvor mange elementer (verdier) arrayen holder på. Husk også at nøklene må komme i stigende rekkefølge, type 0, 1, 2 ..., hvis ikke vil du få et problem. Har du en array med index keys som ikke er i stigende rekkefølge, kan det være mer hensiktsmessig å bruke en foreach loop.

<?php
$frukt
= array (
   
'eple',
   
'pære',
   
'appelsin',
   
'mandarin'
 
);

// Bruker count()-funksjonen for å telle elementer
for ($i = 0; $i < count($frukt); $i++) {
  print
$frukt[$i] . ' er frukt nummer ' . $i . '<br />';
}
?>

Loope med foreach

Ved å loope med foreach kan man velge hvorvidt man ønsker å angi nøkkelen eller ikke. Hvis du har en array, og kun ønsker tilgang til verdiene, skriver du den slik

<?php
foreach ($array AS $value) {
  print
'Arrayen har verdien ' . $value . '<br />';
}
?>

Ønsker du derimot å ha tilgang til både nøkkelen og verdien, definerer du den slik

<?php
foreach ($array AS $key => $value) {
    print
$key . ' er nøkkelen for verdien ' . $value . '<br />';
}
?>

Multi dimensional og mixed arrays

For å loope mellom en multi dimensjonell og mikset array (en array med arrayer hvor nøklene er indekser og assosiative), kan man bruke en blanding av for og foreach loops eller bare foreach løkker.

I dette eksempelet har vi en multidimensjonell og mixed array. Her bruker vi utelukkende foreach. Kodesnutten er tatt fra min egen database over potensielle livspartnere. Jeg bruker denne for å ta logiske beslutninger om hvilket kvinnemenneske som er verdt å satse på.

<?php
$person
= array (
   
'Hilde' => array ('To barn', 'Alenemor', 'Blond', 'Kaninkoker'),
   
'Marit' => array ('Rik familie', 'God utdannelse', 'Gjerrig'),
   
'Trine' => array ('Treningsnarkoman', 'Snusfornuftig', 'Flink til å lage mat'),
   
'Vilde' => 'Skuespiller i Hotel Cæsar',
  );
 
foreach (
$person AS $kvinne => $egenskaper ) {
  print
'<h2>' . $kvinne . '</h2>';
 
// Sjekker om $egenskaper er array
 
if (is_array($egenskaper)) {
    print
'<p>' . $kvinne . ' har endel egenskaper, disse er:</p>';
    print
'<ul>';
    foreach (
$egenskaper AS $egenskap) {
      print
'<li>' . $egenskap . '</li>';
    }
    print
'</ul>';
  } else {
    print
'<p>' . $kvinne . ' er ikke oppnåelig fordi:</p>';
    print
'<p>' . $egenskaper . '</p>';
  }
}
?>

Kjør gjerne PHP scriptet og se hva det blir. :)