נגישות       נגישות
שינוי גודל טקסט:
א א א
שינוי צבעי האתר:
? מקשי קיצור:

לחיצה חוזרת ונשנית על המקש Tab תעביר אתכם בין הקישורים והאזורים השונים בעמוד.

הפעלת מקשי הקיצור תלויה בדפדפן שבו אתם משתמשים.

Internet Explorer, Chrome ובגרסאות ישנות של Firefox: לחצו על מקש Alt ועל מקש המספר או האות על-פי הרשימה. ב Firefox 3 ומעלה: לחצו על המקשים Alt + Shift + המספר או האות.

S - עבור לתוכן הדף
L - חיפוש
1- עמוד הבית
2 - פרוייקטים
3 - מדריכים
4 - אודות
5 - צרו קשר
6 - הצהרת נגישות
 

מדריך PHP – לולאת foreach

מחבר:
בתאריך:

 

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

 

לולאת foreach פשוטה

תחביר לולאת ה-foreach הוא הבא:

foreach(שם_המערך as משתנה){
  בלוק של קוד//
}

 

ובאופן פורמלי יותר:

foreach($array as $value)}
  בלוק של קוד//
}

 

מה שלולאת foreach יודעת לעשות הוא לקחת את המערך שמוצב לתוכה ($array), ולרוץ עליו מספר פעמים כמספר הפריטים במערך (לדוגמה, על מערך שמכיל חמישה פרטים, תרוץ הלולאה 5 פעמים), כשהיא מציבה כל פריט בתורו לתוך המשתנה $value. בפעם הראשונה שהיא רצה, תציב הלולאה את הפריט הראשון מתוך המערך, בפעם השנייה את הפריט השני, וכיו"ב, כמספר הפריטים במערך. הדוגמה הבאה תבהיר את הנקודה, נניח שיש לנו מערך פשוט עם משקלם של חמישה אנשים, ואנחנו רוצים להציג את כל המידע במערך. הקוד ייראה משהו כזה:

<?php
//המערך הפשוט
$weights = array (80, 65, 90.5, 73, 48);
//שתציג את המידע במערך foreach לולאת 
foreach($weights as $weight){
   echo "משקל: ".$weight."<br />";
}

והתוצאה היא הבאה:

משקל: 80
משקל: 65
משקל: 90.5
משקל: 73
משקל: 48

מזה אפשר ללמוד, שבכל ריצה של הלולאה הערך שמקבל $value הוא ערכו של הפריט התורן במערך.

 

מערך רגיל מכיל מידע חבוי נוסף, שהוא האינדקס של כל פריט או מספרו הסידורי במערך (0, 1, 2 ...). כדי להציג את האינדקס נשתמש בתחביר הבא:

foreach($array as $index => $value)}
  בלוק של קוד//
}

 

$array הוא שמו של המערך.

$index הוא המספר הסידורי של הפריט.

$value אילו הערכים.

בהתאם, הקוד הבא יציג את הערכים של הפריטים במערך ואת האינדקס שלהם:

<?php
//המערך הפשוט
$weights = array (80, 65, 90.5, 73, 48);

//שתציג את המידע במערך foreach לולאת 
foreach($weights as $index => $value){
   echo $index." : ".$value."<br />";
}

 

התוצאה של הקוד היא הבאה:

0 : 80
1 : 65
2 : 90.5
3 : 73
4 : 48

אפשר לראות שהאינדקס מתחיל מ-0, וזה מפני שמחשבים מתחילים לספור מאפס.

 

לולאת foreach עבור מערך שיוכי (אסוציאטיבי)

מערך שיוכי (אסוציאטיבי) מכניס למערך מפתחות לערכים, ומצריך טיפול בהתאם. נראה דוגמה למערך שיוכי:

<?php
$personals = array("name" => "Yossi", "color" => "blue", "food" => "falafel");

כדי להריץ על המערך לולאת foreach נשתמש בתחביר הבא, שמחקה את המבנה של מערך אסוציאטיבי:

foreach($array as $key => $value)}
    בלוק של קוד
}

$array הוא שמו של המערך (במקרה זה, associative$).

$key אילו המפתחות, ובדוגמה: name, color, food.

$value אילו הערכים, שהם: Yossi, blue, falafel.

לולאת foreach שתציג את המידע שכלול במערך, עשויה להראות כך:

<?php
foreach($personals as $key => $value){
  echo $key. " : ".$value."<br />";
}

והתוצאה היא הבאה:

name : Yossi
color : blue
food : falafel

 

לולאת foreach עבור מערך רב-ממדי

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

<?php
$players = array(
"אבי" => array(
  "נחוש" <= "אופי",
  "קלע" <= "תפקיד",
  "2.01" <= "גובה"
),
"יורם" => array(
  "אופי" => "",
  "שומר" <= "תפקיד",
  "1.93 <= "גובה
),
"משה" => array(
  "נחוש" <= "אופי",
  "שומר" <= "תפקיד",
  "1.83 <= "גובה
),
"צביקה" => array(
  "לא נחוש" <= "אופי",
  "קלע" <= "תפקיד",
  "1.97 <= "גובה
),
"יפתח" => array(
  "נחוש" <= "אופי",
  "קלע" <= "תפקיד",
  "2.00" <= "גובה"
),
"רמי" => array(
  "לא נחוש" <= "אופי",
  "שומר" <= "תפקיד",
  "1.84" <= "גובה"
)
);

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

<?php
foreach($players as $player => $items)
{
  //קוד עבור המערך החיצוני
  foreach($items as $item => $value)
  {
    קוד עבור המערכים הפנימיים//
    שמתייחסים לכל שחקן בנפרד//
  }
}

 

הקוד הבא, מציג את שמות השחקנים מהמערך, ואת תכונותיהם בטבלה:

<?php
//הכנת המשתנים
$build = "";//המשתנה שבונה את ההטמ"ל
$i=1;//מספר השחקנים לפי מספר הפעמים שרצה הלולאה החיצונית

$build .= "<table border='1' cellspacing='0'>";
$build .= '<tr><th>מס"ד</th><th>השחקן</th><th>אופי</th><th>תפקיד</th><th>גובה</th></tr>';//שורת הכותרת
foreach($players as $player => $items){
  $build .= "<tr><td>".$i."</td>";//שם ומס"ד לפי המערך החיצוני
  $build .= "<td>".$player."</td>";

   foreach($items as $item => $value){
    $build .= "<td>".$value."</td>";//כל שאר הערכים לפי המערכים הפנימיים
  }
	  
  $build .= "</tr>";
	
  $i++;
}

$build .= "</table>";

//מדפיסים את התוצאה למסך
echo $build;

 

זה פלט התכנית:

מס"ד שחקן אופי תפקיד גובה
1 אבי נחוש קלע 2.01
2 יורם שומר 1.93
3 משה נחוש שומר 1.83
4 צביקה לא נחוש קלע 1.97
5 יפתח נחוש קלע 2.00
6 רמי לא נחוש שומר 1.84

 

במדריך הבא תוכלו ללמוד על הטמעת PHP ב-HTML

לכל מדריכי ה-PHP

 

 

הוסף תגובה חדשה

 

= 3 + 4

תמונת המגיב

מוטי בתאריך: 14.05.2014

איזה יופי !