Επιμέλεια Ι.Κονταξάκης
4 ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
Η Εντολή For (1η μορφή επανάληψης)
Η εντολή αυτή χρησιμοποιείται όταν γνωρίζομε τον αριθμό των επαναλήψεων.
Οι βρόχοι for είναι οι πιο πολύπλοκοι βρόχοι στην PHP. Συμπεριφέρονται όπως οι αντίστοιχοί τους στην C και η σύνταξη ενός βρόχου for είναι η εξής :
for (έκφραση1; έκφραση2; έκφραση3) … εντολή …
Η πρώτη έκφραση (έκφραση1) αποτιμάται (εκτελείται) μία φορά, χωρίς να υπάρχει κάποια συνθήκη, στην αρχή του βρόχου.
Στην αρχή της κάθε επανάληψης αποτιμάται η έκφραση2 και αν αποτιμηθεί σε TRUE, ο βρόχος συνεχίζεται και εκτελούνται οι περιεχόμενες εντολές. Αν αποτιμηθεί σε FALSE, σταματάει η εκτέλεση του βρόχου. Στο τέλος της κάθε επανάληψης αποτιμάται (εκτελείται) η έκφραση3.
Και οι τρεις εκφράσεις μπορούν να είναι κενές (empty). Αν είναι κενή η έκφραση2, αυτό σημαίνει ότι ο βρόχος θα εκτελείται ασταμάτητα. Αυτό είναι χρήσιμο όταν θέλουμε να βγούμε από τον βρόχο χρησιμοποιώντας μια εντολή break.
Και τα τέσσερα επόμενα παραδείγματα εμφανίζουν τους αριθμούς από 1 έως 10 :
/* παράδειγμα 1 */
for ($i = 1; $i <= 10; $i++) {
print $i;
}
/* παράδειγμα 2 */
for ($i = 1;;$i++) {
if ($i > 10) {
break;
}
print $i;
}
/* παράδειγμα 3 */
$i = 1;
for (;;) {
if ($i > 10) {
break;
}
print $i;
$i++;
}
/* παράδειγμα 4 */
for ($i = 1; $i <= 10; print $i, $i++) ;
Η PHP υποστηρίζει επίσης και την εναλλακτική σύνταξη για τους βρόχους for :
for (έκφραση1; έκφραση2; έκφραση3): εντολή; ...; endfor;
.
Η Εντολή While (2η Μορφή επανάληψης)
Η εντολή αυτή μπορεί να μην εκτελεστεί καθόλου αφού η συνθήκη είναι στην αρχή της εντολής. Δείτε το παρακάτω παράδειγμα :
Ενώ η εντολή if-else μάς δίνει τη δυνατότητα να επιλέξουμε αν θα εκτελέσουμε ή όχι ένα σύνολο εντολών ανάλογα με την τιμή επιστροφής μιας συνθήκης, ο βρόχος while μάς δίνει τη δυνατότητα να χρησιμοποιήσουμε μια συνθήκη για να καθορίσουμε πόσες φορές θα εκτελεσθεί επανειλημμένα ένα σύνολο εντολών.
Η σύνταξη του βρόχου while είναι η εξής :
while ( <συνθήκη> ) {
// εντολές που θα εκτελούνται συνέχεια
// για όσο διάστημα η <συνθήκη> παραμένει αληθής (true)
}
Θα δούμε ένα απλό παράδειγμα με τον βρόχο while, όπου θα μετρήσουμε ως το 10.
$count = 1;
while ($count <= 10) {
echo( "$count " );
$count++;
}
Το αποτέλεσμα από την εκτέλεση του παραπάνω κώδικα θα είναι το εξής string : "1 2 3 4 5 6 7 8 9 10".
Χρησιμοποιήσαμε τον αριθμητικό τελεστή σύγκρισης <= (μικρότερο από ή ίσο) και οι άλλοι αριθμητικοί τελεστές σύγκρισης είναι οι >= (μεγαλύτερο από ή ίσο), < (μικρότερο από), > (μεγαλύτερο από) και != (όχι ίσο).
Τα δύο επόμενα παραδείγματα είναι ολόιδια και εμφανίζουν και τα δύο τους αριθμούς 1 έως 10 :
$i = 1;
while ($i <= 10) {
print $i++;
}
$i = 1;
while ($i <= 10):
print $i;
$i++;
endwhile;
Η Εντολή Do While (3η Μορφή επανάληψης)
Η εντολή αυτή θα εκτελεστεί τουλάχιστον μία φορά . Η συνθήκη στο τέλος της εντολής .
Οι βρόχοι do .. while είναι πολύ παρόμοιοι με τους βρόχους while, εκτός από το ότι η έκφραση ελέγχεται στο τέλος κάθε επανάληψης και όχι στην αρχή. Η βασική διαφορά τους από τους βρόχους while είναι ότι η πρώτη επανάληψη ενός βρόχου do .. while θα εκτελεσθεί σίγουρα τουλάχιστον μία φορά.
Υπάρχει μία μόνο σύνταξη για τον βρόχο do .. while :
$i = 0;
do {
print $i;
} while ($i>0);
Ο παραπάνω βρόχος θα εκτελεσθεί μία φορά ακριβώς, εφόσον μετά από την πρώτη επανάληψη, όταν ελέγχεται η έκφραση, αποτιμάται σε FA-LSE και έτσι τερματίζεται η εκτέλεση του βρόχου.
Μπορούμε να χρησιμοποιήσουμε την εντολή break για να σταματήσουμε την εκτέλεση ενός βρόχου στη μέση του κώδικα :
do {
if ($i < 5) {
print "Το i δεν είναι αρκετά μεγάλο";
break;
}
$i *= $factor;
if ($i < $minimum_limit) {
break;
}
print "Το i είναι ΟΚ";
... process I ...
} while(0);
Η Εντολή Continue
Η εντολή continue χρησιμοποιείται σε δομές βρόχου για να συνεχίσει την εκτέλεση του προγράμματος από την αρχή του βρόχου και να αγνοήσει έτσι τις υπόλοιπες εντολές μέχρι το τέλος του βρόχου.
while (list($key, $value) = each($arr)) {
if ($key % 2) { // αγνοεί τους άρτιους αριθμούς
continue;
}
do_something_odd ($value);
}
Η Εντολή Break
Με την εντολή break μπορούμε να εξέλθουμε από μια δομή ελέγχου χωρίς να περιμένουμε να ικανοποιηθεί η συνθήκη εξόδου του βρόχου.
$i = 0;
while ($i < 10) {
if ($arr[$i] == "stop") {
break;
}
$i++;
}
Ένας Άλλος Τρόπος Σύνταξης των Δομών Ελέγχου
Η PHP προσφέρει μια εναλλακτική σύνταξη για μερικές από τις δομές ελέγχου της (control structures) και πιο συγκεκριμένα τις if, while, for και switch.
Η βασική μορφή της εναλλακτικής σύνταξης είναι να αλλάξει την αγκύλη ανοίγματος στον χαρακτήρα : και την αγκύλη κλεισίματος στο endif;, endwhile;, endfor; ή endswitch; αντίστοιχα.
<?php if ($a==5): ?>
Το a είναι ίσο με 5
<?php endif; ?>
Στο παραπάνω παράδειγμα, ένα μπλοκ της HTML βρίσκεται μέσα σε μια εντολή if που είναι γραμμένη με την εναλλακτική σύνταξη. Το μπλοκ της HTML θα εμφανισθεί μόνο αν το $a είναι ίσο με 5.
Η εναλλακτική σύνταξη ισχύει και για τις εντολές else και elseif επίσης.
Ακολουθεί μια δομή if με elseif και else στην εναλλακτική σύνταξη :
if ($a == 5):
print "Το a είναι ίσο με 5";
print "...";
elseif ($a == 6):
print "Το a είναι ίσο με 6";
print "!!!";
else:
print "Το a δεν είναι ούτε 5 ούτε 6";
endif;
$varone = 1;
$vartwo = 2;
require( "file.inc" );
/* Οι $varone και $vartwo θα είναι διαθέσιμες στο file.inc */