continue-instruksjonen i PHP
I tillegg til instruksjonen break, som avslutter
en løkke, finnes det også instruksjonen
continue, som starter en ny iterasjon
av løkken. Denne instruksjonen kan noen ganger være
nyttig for å forenkle koden, selv om oppgaven
nesten alltid kan løses uten den. La oss
se på et praktisk eksempel.
Anta at vi har en array med tall. La oss
gå gjennom den med en løkke, og for tallene som er delelige
på 2, skal vi kvadrere dem og skrive
dem ut på skjermen, og tall som er delelige på 3,
skal vi opphøye i tredje potens og skrive ut på skjermen.
Her er løsningen på den beskrevne oppgaven:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
foreach ($arr as $elem) {
if ($elem % 2 === 0) {
$res = $elem * $elem;
echo $res;
} elseif ($elem % 3 === 0) {
$res = $elem * $elem * $elem;
echo $res;
}
}
?>
Som du ser, gjentas linjen echo $res
to ganger. La oss flytte den
ut av if, slik:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
foreach ($arr as $elem) {
if ($elem % 2 === 0) {
$res = $elem * $elem;
} elseif ($elem % 3 === 0) {
$res = $elem * $elem * $elem;
}
echo $res; // flyttet utskriften ut av betingelsen
}
?>
Men nå fungerer skriptet vårt litt
annerledes: det vil si at også for vanlige elementer,
som ikke ble behandlet gjennom vår if, vil
utskriften av variabelen $res
utføres, noe som ifølge betingelsen i oppgaven vår
ikke er ønsket.
La oss rette problemet ved å legge til en else
til vår if, som vil utløses
for elementer som ikke er delelige på 2 og
3, og kalle instruksjonen continue der,
som umiddelbart vil sende oss
videre til neste iterasjon av løkken:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
foreach ($arr as $elem) {
if ($elem % 2 === 0) {
$res = $elem * $elem;
} elseif ($elem % 3 === 0) {
$res = $elem * $elem * $elem;
} else {
continue; // går til neste iterasjon av løkken
}
echo $res; // utføres hvis delelig på 2 eller 3
}
?>
Skriv en løkke som kun skriver ut
partall fra 1 til 100,
og hopper over oddetall ved hjelp av continue.