לולאת while בשפת PHP

לולאת while בשפת PHP

  • פרסומת

לעיתים קרובות יש צורך להריץ את אותו קוד מספר פעמים. במקום לכתוב את אותו הקוד מספר פעמים (קוד שחוזר על עצמו הוא בעייתי גם מבחינת כתיבה וגם מבחינת תחזוקה), ניתן להשתמש בלולאה. בשפת PHP ישנם 4 סוגי לולאות:

  • לולאת while – לולאה החוזרת על עצמה כל עוד התנאי מתקיים.
  • לולאת do…while – דומה ללולאת while, רק שהבדיקה של התנאי נעשית לאחר הרצת הקוד.
  • לולאת for – לולאה המכילה משתנה (counter) וחוזרת על עצמה מספר מוגדר של פעמים.
  • לולאת foreach – לולאה החוזרת על עצמה לכל אלמנט של המערך (array).

לולאת while

כאמור, PHP ימשיך להריץ את הלולאה עד שהתנאי יהפוך לשקרי. בדוגמה הבאה המשתנה $i מוגדר תחילה כאפס. התנאי של הלולאה הוא $i < 5, כלומר כל עוד הערך של $i קטן מ-5. בתוך הסוגריים המסולסלים מוגדר הקוד שירוץ בכל לולאה. במקרה הנ״ל הקוד יציג את הפלט המוגדר ויגדיל את המשתנה $i באחד. הלולאה תעצר כאשר הערך של $i יגיע ל-4 ( ולא ל-5, משום ש 4 < 5 ).

<?php
$i = 0;
while( $i < 5 )
{
    echo "loop number $i <br />";
    $i++;
}
echo "Loop ended";

הפלט של הקוד הנ״ל יהיה:

Loop number 0
Loop number 1
Loop number 2
Loop number 3
Loop number 4
Loop ended

חשוב לוודא שהתנאי יהפוך לשקרי ושהלולאה תסתיים באיזשהו אופן, אחרת אפשר ליצור לולאה אינסופית (infinite loop) שתגרום לאתר לקרוס. לדוגמה, אם נשמיט מהדוגמה הקודמת את העדכון של המשתנה $i++, התוצאה תהיה לולאה אינסופית.

<?php
$i = 0;
while( $i < 5 )
{
    echo "loop number $i <br />";
}
echo "Loop ended";

הפלט של הקוד הנ״ל יחזור על עצמו ללא הפסקה, את ש-PHP יקרוס. שורת הקוד האחרונה לעולם לא תרוץ.

...
Loop number 0
Loop number 0
Loop number 0
Loop number 0
Loop number 0
Loop number 0
...

לולאת do…while

הלולאה הבאה פועלת באופן דומה, חוץ מהעובדה שהתנאי נבדק לאחר הרצת הקוד. זה אומר שהקוד בתוך הלולאה ירוץ לפחות פעם אחת, ללא קשר לתנאי. בדוגמה הבאה, הקוד ירוץ פעם אחת, למרות שהתנאי שקרי:

<?php
$i = 5;
do
{
    echo "The value of \$i is $i <br />";
    $i++;
} while ( $i < 5 ) echo "Loop ended";

הפלט של הקוד הנ״ל יהיה:

The value of $i is 5
Loop ended

דוגמאות נוספות

הדוגמה הבאה תציג את האלמנטים בסידרת פיבונאצ׳י הקטנים מ-100. רוצים לקבל את כל האלמנטים הקטנים מ-100,000? פשוט שנו את הערך של המשתנה $max למספר המבוקש ותנו למחשב לעשות את השאר!

<?php
$max = 100;
$a = 1;
$b = 1;
$c = 1;
while( $b < $max ) { echo $b . ', '; $c = $a; $a = $b; $b = $c + $a; }

הפלט של הקוד הנ״ל יהיה:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89,