Instruktionen continue i PHP
Förutom instruktionen break, som avslutar
en loop, finns det också instruktionen
continue, som startar en ny iteration av
loopen. Denna instruktion kan ibland vara
användbar för att förenkla koden, även om
uppgiften nästan alltid kan lösas utan den. Låt oss
titta på ett praktiskt exempel.
Antag att vi har en array med siffror. Låt oss
gå igenom den med en loop och för de tal som är delbara
med 2, kvadrera dem och skriv ut
dem på skärmen, och de tal som är delbara med 3,
upphöj dem till kub och skriv ut dem på skärmen.
Här är lösningen på den beskrivna uppgiften:
<?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, raden echo $res
upprepas två gånger. Låt oss flytta ut den
ur if, så här:
<?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; // flyttade ut utskriften ur villkoret
}
?>
Men nu fungerar vårt skript lite
annorlunda: det kommer att visa sig att även för vaniga element,
som inte behandlats genom vår if, kommer
utskriften av variabeln $res
att utföras, vilket enligt villkoren för vår uppgift inte är
nödvändigt.
Låt oss åtgärda problemet genom att lägga till ytterligare ett villkor
else till vår if,
som kommer att triggas
för element som inte är delbara med 2 och
3, och anropa instruktionen continue där,
som omedelbart kommer att kasta oss över
till en ny iteration av loopen:
<?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 till nästa iteration av loopen
}
echo $res; // utförs endast om delbart med 2 eller 3
}
?>
Skriv en loop som endast skriver ut
jämna tal från 1 till 100,
och hoppar över de ojämna med hjälp av continue.