PHP/לולאות: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
חורחה (שיחה | תרומות)
אין תקציר עריכה
חורחה (שיחה | תרומות)
אין תקציר עריכה
שורה 14:
יש לתחום את הפקודות בסוגריים מסולסלים ({}) בצורה הבאה:
<div style="text-align:left; direction:ltr;">
<pre">
while(expression)
{
statement;
שורה 97 ⟵ 98:
לכן הלולאה תמשיך להתבצע שוב ושוב ושוב עד שבמוקדם או במאוחר השרת יעצור את ביצוע התסריט מכיוון
שעבר הזמן המירבי שהוגדר לביצוע תסריט של עמוד כלשהו, ותודפס הודעת שגיאה.
 
==לולאת Do...While==
 
לולאת do...while דומה באופן פעולתה ללולאת while. ההבדל בין השתיים,
הוא שבלולאת do while הבדיקה להמשך פעולתה של הלולאה נעשית בסוף כל איטרציה.
מה שמבטיח לנו כי גוף הלולאה יתבצע לפחות פעם אחת. תחביר הלולאה נראה כך:
<div style="text-align:left; direction:ltr;">
<pre> do
{
statement;
statement;
.
.
.
}
while (Expression)</pre>
</div>
בדרך זו, גוף הלולאה יתבצע בפעם הראשונה, ואז יבדק הביטוי Expression.
אם יחזיר הביטוי 'אמת', תמשיך הלולאה להתבצע. אם יחזיר 'שקר', תחדל הלולאה מלהתבצע.
 
 
=== דוגמא ===
<div style="text-align:left; direction:ltr;">
<pre> $num = 1;
do
{
echo $num;
}
while ($num < 1)</pre>
</div>
בדוגמא זו, לפני הכניסה ללולאה מוצב למשתנה num הערך 1.
מיד אח"כ מתבצע גוף הלולאה בפעם הראשונה, ומדפיס את ערכו של num.
ורק אז מתבצעת הבדיקה להמשך הלולאה, שם נבדק האם num קטן מ 1, מכיוון ש 1 לא קטן מ 1,
הלולאה לא תתבצע שוב.
 
אך ראינו כי למרות שהתנאי הנלווה ל while מחזיר שקר, גוף הלולאה מתבצע לפחות פעם אחת.
 
==לולאת FOR==
 
לולאות FOR הן דוגמא פשוטה מאוד ללולאות בתכנות. הלולאה הזאת פועלת בצורה כמעט זהה לזאת של לולאת הWHILE, ניתן להגיד שהיא מקרה ייחודי של לולאה הרצה כמות קבועה של פעמים, מעט יותר מהר מWHILE.
 
===תחביר===
לולאת FOR מורכבת משלושה חלקים בתוך הסוגריים שלה: הגדרת המשתנה הראשוני; תנאי ההמשכיות; ופעולת ההרצה. הגדרת המשתנה הראשוני נועדה כדי לבחור מאיפה תתחיל הלולאה והספירה. תנאי ההמשכיות הוא הנקודה בה הלולאה תפסיק, ופעולת ההרצה היא שמגדירה מה יקרה בסוף כל הרצה של הלולאה.
זה עלול להשמע מסובך בתחילה, אבל זה למעשה פשוט למדי. אם נרצה להריץ לולאה שתרוץ שלושה פעמים, החל מהמספר 1 וכלה במספר 3, נריץ את הלולאה הבאה:
<div style="text-align:left; direction:ltr;">
for($i=1;$i<=3;$i++)
</div>
ניתן לראות את החוקים הבסיסיים של PHP נוכחים בקלות. תחילה אנו קוראים ללולאת הFOR, ובתוך הסוגריים שלה אנו מגדירים את המשתנה הראשוני. $i הוא שם נפוץ, אבל ניתן להשתמש בכל שם משתנה רצוי. אנו מגדירים ש$i, בתחילת הלולאה, שווה ל1. אנו מסיימים את החלק הראשון בנקודה-פסיק. בחלק השני אנו מגדירים את תנאי ההמשכיות - על הלולאה להמשך כל עוד $i קטן או שווה ל3, נקודה-פסיק. ולבסוף פעולת ההרצה. ++i$ מסמל עלייה במספר אחד (או באות אחת, אם $i הוא ערך מחרוזת). הפונקציה שבתוך לולאת הfor תורץ תחילה כאשר $i שווה לאחד, וכאשר הפונקציה תסתיים, $i יעלה במספר אחד, ויהפוך לשתיים. הפונקציה תורץ שוב. $i יהפוך לשלוש - הוא עדיין בתוך תנאי ההמשכיות של הלולאה. הפונקציה תורץ פעם שלישית, ו$i יוגדר כ4. כעת הוא לא בתוך תנאי ההמשכיות של הלולאה, ולכן הלולאה תפסק.
ניקח לדוגמא את הלולאה הבאה:
 
<div style="text-align:left; direction:ltr;">
<pre>
for($i=1;$i<=3;$i++){
echo "Loop number $i.\n";
}
</pre>
</div>
 
התוצאה שתוצג תהיה:
<div style="text-align:left; direction:ltr;">
Loop number 1.</br>
Loop number 2.</br>
Loop number 3.</br>
</div>
 
===לולאות FOR פחות נפוצות===
בדוגמא הקודמת הוצגה לולאת FOR בצורה הכי נפוצה שלה - ספירה והרצה של קטע קוד כלשהוא מספר פעמים. זאת היעילות העיקרית של לולאות FOR. אבל לעיתים משתמשים בלולאות הFOR בדרכים שונות, יותר מסובכות. לדוגמא, ישנם הלולאות שמשתמשות באותיות להרצה:
 
<div style="text-align:left; direction:ltr;">
<pre>
for($i="a";$i!="z";$i++){
strtoupper($i)+"! ";
}
</pre>
</div>
 
זה יציג:
<div style="text-align:left; direction:ltr;">
A! B! C! D! E! F! G! H! I! J! K! L! M! N! O! P! Q! R! S! T! U! V! W! X! Y!
</div>
 
ישנן וריאציות מרובות של לולאות FOR, ולא ניתן להציג את כולן. אבל שלושת קטעי הלולאה תמיד יהיו תקפים, ותמיד יוכלו להסביר את פעולת הלולאה: הגדרת משתנה ראשוני, תנאי ההמשכיות ופעולת ההרצה.
 
==החסרת פעולות הלולאה ודמיון עם WHILE==
יש להעיר שלולאת הFOR אינה צריכה את שלושת הקטעים שלה כדי לפעול. לעיתים, כאשר המשתנה כבר הוגדר מראש, אין צורך להכניס אותו לתוך הלולאה; או, לחלופין, ייתכן ופעולת ההרצה כבר נמצאת בתוך קטע הקוד של ההרצה, ולכן לא צריך פעולת הרצה בלולאה עצמה. ניתן אפילו לעצור את הלולאה בעזרת תנאי פנימי בעזרת מילת הפקודה break.
הנה הלולאה שבה השתמשנו כדוגמא בתחילת ההסבר:
<div style="text-align:left; direction:ltr;">
<pre>
for($i=1;$i<=3;$i++){
echo "Loop number $i.\n";
}
</pre>
</div>
 
היא זהה בפעילות גם אל הלולאה הבאה:
 
<div style="text-align:left; direction:ltr;">
<pre>
$i = 1;
for(;$i<=3;$i++){
echo "Loop number $i.\n";
}
</div>
</code>
והיא שווה לחלוטין אל הלולאה הזאת:
<code>
<div style="text-align:left; direction:ltr;">
$i = 1;
for(;$i<=3;){
echo "Loop number $i.\n";
$i++;
}
</pre>
</div>
שימו לב למיקומי הנקודה-פסיק. צריך לשמור אותם כדי שPHP יוכל לזהות את הקטעים הנכונים כראוי.
לבסוף, יש לזכור שהלולאה הזאת זהה אל לולאת הWHILE הבאה:
 
<div style="text-align:left; direction:ltr;">
<pre>
$i = 1;
while($i<=3){
echo "Loop number $i.\n";
$i++;
}
</pre>
</div>
 
אם כי לולאת הFOR המתאימה מהירה יותר במקצת.
ולבסוף, ניתן גם להשתמש בלולאה הבאה, שבה לולאת הFOR כמעט ריקה:
 
<div style="text-align:left; direction:ltr;">
<pre>
$i = 1;
for(;;){
if($i<=3)
break;
echo "Loop number $i.\n";
$i++;
}
</pre>
</div>
הלולאה תעבוד כרגיל.
 
==שימושים ללולאת FOR==
היתרון היחיד של לולאת הFOR על לולאת הWHILE הוא שלולאת הFOR מהירה במקצת מלולאת הWHILE. תמיד כאשר אפשר, עדיף להשתמש בFOR, אבל לעיתים זה כולל סיבוך מיותר של הקוד, ולכן עדיף השימוש בלולאת הWHILE.
בלולאת הFOR עדיף להשתמש כאשר אתה רוצה להריץ פונקציה מספר קבוע של פעמים. למשל, אם אתה רוצה לכתוב את אותה שורת הטקסט מאה פעמים, תוכל להשתמש בלולאת הFOR, כאשר תנאי ההמשכיות שלה הוא שi$ קטן או שווה למאה. לחלופין, אם אתה רוצה להריץ שורת קוד מסויימת כמות בלתי ידועה של פעמים, כמות אשר שמורה בתוך משתנה שנשלף ממסד הנתונים או שהוזן על ידי מבקר, תוכל להגדיר את כמות ההרצות הרצויות בתור x$, ואז להשתמש בלולאה הרגילה, כאשר אתה מחליף את המספר במשתנה:
 
<div style="text-align:left; direction:ltr;">
<pre>
for($i=1;$i<=$x;$i++){
}
</pre>
</div>
או בקוד הזהה בפעילותו (מלבד הערכים המדוייקים הנשמרים בi$):
 
<div style="text-align:left; direction:ltr;">
<pre>
for($i=0;$i<$x;$i++){
}
</pre>
</div>
מעבר לכך, רק ההכרות שלכם עם המצב תראה מתי השימוש בלולאת הFOR יותר יעילה.