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

תוכן שנמחק תוכן שנוסף
Mad dr (שיחה | תרומות)
שורה 264:
 
==לולאת Foreach==
לולאת FOREACH היא לולאה העוברת על מערך (פעם אחת על כל ערך) ויכולה להשתמש בערך במהלך האיטרציה:
===דוגמא ראשונה===
<div style="text-align:left; direction:ltr;">
<pre><?php
$myArray = array( 'one', 'two', 'three');
foreach ($myArray as $object)
{
print $object." ";
}
?>
</pre>
</div>
* בדוגמא אנחנו רואים שהקוד עובר על כל אחד מהאיברים במערך ומדפיס אותם (בקצה הוספנו רווח כדי שלא יצא הכל במילה אחת). למרות שנראה שאנחנו תמיד מדפיסים את אותו משתנה ($object), למעשה לולאת ה-FOREACH מכניס בכל פעם את האיבר הבא במערך לתוך המשתנה ולכן אנחנו יכולים להשתמש בו.
* '''חשוב:''' לולאת FOREACH לא משנה את המערך או את המבנה שלו, ולכן ניתן לעבור עליו במספר לולאות FOREACH אחת אחרי השניה ואפילו בלולאות מקוננות. (כל זה כל עוד לא עשינו משהו למערך ''בתוך'' הלולאה)
 
===דוגמא שנייה===
<div style="text-align:left; direction:ltr;">
<pre><?php
$sum = 0;
$numbers = array( 15, 75, 32, 12);
foreach ($numbers as $num)
{
$sum += $num;
}
echo $sum;
?>
</pre>
</div>
* בדוגמא השניה התסריט מוסיף את המשתנה של הלולאה ($num) לתוך משתנה חיצוני ולכן מאפשר לנו לקבל את סכום הציונים.
 
===דוגמא שלישי===
<div style="text-align:left; direction:ltr;">
<pre><?php
$i = 0;
$sum = 0;
$grade['moshe'] = 60;
$grade['kipi'] = 95;
$grade['elmo'] = 100;
foreach ($grade as $name=>$grd)
{
echo "$name received a grade of $grd on the exam.\n";
$i++;
$sum += $grd;
}
echo "The average at class is: ".$sum/$i."\n";
?>
</pre>
</div>
* בדוגמא השלישית אנחנו רואים דוגמא לתחביר מעט שונה. במקרה הזה המערך הוא מערך אסוציאטיבי (כלומר לכל ערך יש שם מזהה, מפתח, המשמש כאינדקס מילולי ולא מספרי). אנחנו יכולים לעבור על מערך כזה בצורה שרינו בדוגמאות 1 ו-2, אבל יש לנו גם אפשרות לקבל בלולאת את גם המפתח של הערך לתוך משתנה. התחביר הוא מפתח=>ערך (foreach ($var as $key=>$value)).
* תחביר זה מאפשר לנו לתת יותר מידע על המערך ולקשר בין שני הנתונים גם בהמשך התסריט.
 
{{PHP|מוגבל=כן}}