Η εντολή continue στην PHP
Εκτός από την εντολή break, που τερματίζει
τη λειτουργία του βρόχου, υπάρχει επίσης η εντολή
continue, που ξεκινά μια νέα επανάληψη
του βρόχου. Αυτή η εντολή μπορεί μερικές φορές να είναι
χρήσιμη για την απλοποίηση του κώδικα, αν και σχεδόν
πάντα το πρόβλημα μπορεί να λυθεί και χωρίς αυτήν. Ας
δούμε ένα πρακτικό παράδειγμα.
Ας υποθέσουμε ότι μας δίνεται ένας πίνακας με αριθμούς. Ας
τον επαναλάβουμε με βρόχο και αριθμούς που διαιρούνται με
2, ας τους υψώσουμε στο τετράγωνο και ας τους εμφανίσουμε
στην οθόνη, ενώ αριθμούς που διαιρούνται με 3,
ας τους υψώσουμε στον κύβο και ας τους εμφανίσουμε στην οθόνη.
Ακολουθεί η λύση του περιγραφόμενου προβλήματος:
<?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;
}
}
?>
Όπως βλέπετε, η γραμμή echo $res
επαναλαμβάνεται δύο φορές. Ας την βγάλουμε
έξω από το if, έτσι:
<?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; // έγινε εξαγωγή του εμφωλευμένου κώδικα
}
?>
Ωστόσο, τώρα το script μας λειτουργεί ελαφρώς
διαφορετικά: θα συμβεί ότι και για συνηθισμένα στοιχεία,
που δεν επεξεργάστηκαν μέσω του if μας, θα
εκτελείται η εμφάνιση της μεταβλητής $res
στην οθόνη, κάτι που σύμφωνα με τις συνθήκες του προβλήματός μας
δεν χρειαζόμαστε.
Ας διορθώσουμε το πρόβλημα, προσθέτοντας στο if μας
μια ακόμη συνθήκη else, που θα ενεργοποιείται
για στοιχεία που δεν διαιρούνται με 2 και
3, και θα καλούμε εκεί την εντολή continue,
η οποία αμέσως θα μας μεταφέρει
στην νέα επανάληψη του βρόχου:
<?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; // θα μεταβούμε στην νέα επανάληψη του βρόχου
}
echo $res; // θα εκτελεστεί, εάν διαιρείται με 2 ή 3
}
?>
Γράψτε έναν βρόχο, που εμφανίζει μόνο
ζυγούς αριθμούς από 1 έως 100,
παραλείποντας τους μονούς με χρήση του continue.