לולאת do...while דומה מאוד ללולאת while עם הבדל אחד: בעוד שלולאת while בודקת את התנאי לפני ביצוע האיטרציה הראשונה, לולאת do...while קודם כל מבצעת את האיטרציה הראשונה ללא בדיקת התנאי ורק אחרי האיטרציה הראשונה היא בודקת את התנאי ומשם היא ממשיכה להתנהג כלולאת while.
לולאה זו מחייבת להשתמש בסוגריים מסולסלים גם אם יש רק שורת קוד אחת, לכן אין דרך נוספת לכתוב אותה מלבד כך:
<?php do
/*
בצע את האיטרציה הראשונה ללא שום תנאי...
*/
{ ... statements; ...
/*
בכל איטרציה אנו מבצעים את הפקודות statements.
*/
}while (expr)
/*
לאחר ביצוע האיטרציה הראשונה, אנו מבצעים איטרציה נוספת כל עוד הביטוי expr הוא אמת...
*/
?>
נביא דוגמא שמדפיסה את המספרים מ-1 ל-10:
<?php $i=1; do
/*
היות ואנו משתמשים בלולאת do...while, המספר 1 יודפס תמיד ללא תלות בתנאי שמופיע ב-while, כי אנו מבצעים את האיטרציה הראשונה ללא שום תנאי.
אנו מקדמים את $i בתוך הביטוי של while. שים לב שזהו פרה-קידום.
*/
?>
תגובות בנושא
אחלה .
04-12-03 13:01 [ללא שם]
#832
אני מהנדס תוכנה מזה 7 שנים , ורציתי להגיד לכם כל הכבוד על ההשקעה והמדריך הנפלא.
אם הבנתי נכון...
07-12-03 06:02 אוהב את האתר הזה!
#951
ההבדל היחיד בין לולאת while לבין do...while זה הסדר, ואפשר להשתמש בשניהם בכול מקום בקוד בלי הבדל בפלט או בהרצה, לא?
בכלל לא!
03-11-03 07:01 יונתן גורן
#1358
ההבדל הוא שבלולאת do...while הדפדפן קודם מבצע ואחר-כך בודק, ז"א שאם אתה כותב:
$a = 4;
$b= 1;
do
{
$b++;
} while ($a<4)
echo $a;
יחזיר 2 ולא 1, כי הלולאה קודם בוצה ואז נבדקה.
אופס..
03-11-03 07:01 יונתן גורן
#1359
בשורה האחרונה של הקוד שכתבתי התכוונתי ל-
echo $b;
בקשר ל "אם הבנתי נכון..."
07-12-04 15:01 אלון אסקלסקי
#1685
נגיד שיש תנאי שהוא שקר,
אז בלולאת while הוא לא יתקבצע בכלל וידלג על הקוד.
אך בלולאת do...while הוא יתבצע בפעם הראשונה ואז אם הוא עדיין שקר הוא לא יתבצע בפעם השנייה, אך אם הוא כבר אמת לאחת הפעולה שנעשתה ב"do" הלולאה תמשיך עד שהוא יהיה שקר.
עדיין לא הבנתי
06-12-09 12:02 אלכס נוסינוב
#2838
מזה פקודות statements;?
לא משנה ^^
06-12-09 12:02 אלכס נוסינוב
#2840
לא משנה למה שכתבתי..
ויונתן גורן לא הבנתי מה ניסית להסביר שם
מישהו יכול להסביר פה בבקשה