אתה נמצא כאן יסודות השפה  >>  מבני בקרה  >>  לולאת for

לולאת for

לולאת for היא הלולאה המורכבת ב-PHP. היא נראית כך:

<?php
  for
/*עבור הפרמטרים הבאים, בצע את הלולאה...*/
 (initial
/*אתחול:
האתחול מתבצע פעם אחת בלבד כשמתחילה הלולאה
עוד לפני בדיקת התנאי לביצוע האיטרציה.
[ניתן לכתוב מספר פקודות באתחול המופרדות ע"י פסיק.]
*/
 ; expr
/*תנאי:
ביטוי בוליאני שנבדק לפני כל ביצוע של איטרציה.
כאשר הוא נותן אמת, מבצעים איטרציה נוספת.
כאשר הוא נותן שקר, מפסיקים את הלולאה.
*/
 ; promotion
/*קידום:
לאחר כל של איטרציה, אנו מקדמים ערכים לאיטרציה הבאה.
לאחר הקידום, אנו חוזרים לבדוק שוב את תנאי הלולאה (expr).
[ניתן לכתוב מספר פקודות בקידום המופרדות ע"י פסיק.]
*/
)
  {
     ...
     statements;
     ...
/*בכל איטרציה אנו מבצעים את הפקודות statements.*/

  }
?>

לולאת for עובדת בצורה הבאה:
כשאנו מגיעים לראשונה ללולאה אנו מבצעים את initial פעם אחת בלבד וללא בדיקת תנאי מקדים. לאחר מכן אנו בודקים את הביטוי expr לפני כל איטרציה, ומבצעים את האיטרציה כאשר ערכו הוא אמת, כשבסוף כל איטרציה אנו מבצעים את promotion, ואח"כ חוזרים לבדוק את התנאי שוב לפני כל איטרציה נוספת. כאשר הביטוי הוא שקר הלולאה מפסיקה.

נביא דוגמא שמדפיסה את המספרים מ-1 ל-10:

<?php
  for ($i=1 ; $i<=10 ; $i++)
/*עבור הפרמטרים הבאים בצע את הלולאה:
אתחול: מתחילים את הלולאה עם הערך $i=1.
תנאי: אם $i קטן-שווה ל-10, בצע את האיטרציה. אחרת, הפסק את הלולאה.
קידום: לאחר כל איטרציה קדם את $i ב-1.
*/

     echo " $i";
/*בכל איטרציה אנו מדפסים את הערך $i.*/

?>

הקידום של הלולאה הוא לא בהכרח קידום ממשי של הערכים בלולאה. הוא נקרא קידום משום שע"י שינוי הערכים אנו מקדמים את הלולאה צעד נוסף קדימה. ואומנם, ניתן לכתוב בקידום כל פקודה שהיא שמשנה את הערכים לאיטרציה הבאה (אפילו קריאה לפונקציה). יתרה מזאת, ניתן לשלב את כל הקוד של האיטרציה בחלק של הקידום (והבלוק של האיטרציה יהיה ריק), אך רצוי לכתוב רק פקודות שמקדמות את הלולאה כדי שיהיה קל יותר להבין את פעולת הלולאה.

ניתן לכתוב את הלולאה גם בעזרת for: ו-endfor. ניתן לכתוב בחלק של הקידום והאתחול מספר פקודות המופרדות ע"י פסיק. בחלק של התנאי יש לדאוג שיתקבל ביטוי בוליאני.


תגובות בנושא

איך מוסיפים שני תנאים בלולאת for? 01-11-02 20:01
 אסף אגמי
#577

אני רוצה לשים שני תנאים בלולאת for שרק מתי ששניהם נכונים הלולאה תרוץ. אם רק אחד, הלולאה תיפסק.
איך עושים את זה?

תנאי "וגם" 01-11-02 21:00
 אלי חן (מנהל)
#579

בין 2 התנאים תוסיף את האופרטור "וגם" שהוא:
&&

עזרה בנושא זה! 02-11-02 19:02
 Almog
#618

אתה רשמת במדריך את הדבר הבא:
ניתן לכתוב את הלולאה גם בעזרת for: ו-endfor. ניתן לכתוב בחלק של הקידום והאתחול מספר פקודות המופרדות ע"י פסיק. בחלק של התנאי יש לדאוג שיתקבל ביטוי בוליאני.

תוכל לתת דוגמא? או את התבנית? וד"א תוכל לתת עוד דוגמאות לשימוש בלולאה זאת חוץ מספירת מספרים (מה שאתה עושה בכל הלולאות!) תודה רבה מראש!!!

בברכה Almog.

תחביר משני 02-11-02 22:00
 אלי חן (מנהל)
#625

לכל מבני הבקרה ב-PHP יש גם תחביר בנוסף לתחביר הרגיל, אך הוא פחות נפוץ ולטעמי גם פחות נוח. אתן כאן דוגמא לתחביר המשני:

FOR ($i=1; $i<=10; $i++):
FOR ($j=$i; $j>0; $j--):
echo "*";
ENDFOR;
echo "<br>\n";
ENDFOR;

הדוגמא הזו תדפיס "מדרגות".


לדף הקודםלולאת do...while -הקודם
לתחילת הדףלתחילת הדף
הבא- לולאת foreachלדף הבא