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

מבנה switch

מבנה ה-switch הוא כמו רשימה של תנאי if...elseif עם כמה שינויים. המבנה נראה כך:

<?php
  switch (cond)
/*השווה את התנאי cond למקרים הבאים:*/

  {
  case case_1:
/*מקרה case_1: אם cond שווה למקרה case_1,
אנו מבצעים את statements_1.
*/

     statements_1;
  . . .
  . . .
/*מקרים נוספים שאותם רוצים להשוות לתנאי...*/

  default:
/*ברירת המחדל: במקרה ש-cond לא שווה לאף אחד מן המקרים,
אנו מבצעים את מקרה ברירת המחדל (statements_last).
חייב תמיד לבוא בסוף המבנה.
*/

     statements_last;
  }
?>

התנאי שאנו משווים הוא cond, ואנו משווים אותו עם המקרים השונים (case_1 וכו’). במקרה והתנאי שווה למקרה מסויים אז מבצעים את הקוד שלו (אם למשל case_3 שווה לתנאי, אז מבצעים את statements_3) ואת כל שאר הקוד עד לסוף המבנה. במקרה והתנאי לא שווה לשום אחד מן המקרים, אז מבצעים את הקוד שב-default.

- ניתן לכתוב כמה מקרים (case-ים) שרוצים.
- לא חייב להשתמש בברירת המחדל (default), אך אם משתמשים בו, הוא חייב לבוא תמיד בסוף המבנה.

<?php
  $cond=2;
  switch ($cond)
  {
  case 1:
     echo "value is 1<BR>";
  case 2:
/*התנאי שבודקים ($cond) שווה ל-2,
לכן אנו נבצע את הפקודה שרשומה למקרה זה.
אך לא רק אותה, אלא נגלוש לכל המקרים האחרים
ונבצע גם אותם (אעפ"י שהם שלא שווים לתנאי)...
*/

     echo "value is 2<BR>";
  case 3:
     echo "value is 3<BR>";
  default:
     echo "value is not 1,2 or 3<BR>";
  }
?>

כדי לעצור את הגלישה למקרים שאחרי משתמשים ב-break.

<?php
  $cond=2;
  switch ($cond)
  {
  case 1:
     echo "value is 1<BR>";
     break;
  case 2:
/*זהו המקרה שאנו מבצעים...*/

     echo "value is 2<BR>";
     break;
/*מונע גלישה למקרים הבאים,
כאשר אנו מבצעים את המקרה.
*/

  case 3:
     echo "value is 3<BR>";
     break;
  default:
     echo "value is not 1,2 or 3<BR>";
  }
?>

שים לב שאין צורך לשים את הקוד של כל מקרה בסוגריים מסולסלים אף שהקוד מכיל מספר פקודות. שים לב גם שאין צורך לכתוב break במקרה האחרון כי לאחר המקרה האחרון המבנה מסתיים בכל אופן. ניתן לכתוב את המבנה גם בצורה אחרת עם switch: ו-endswitch.


תגובות בנושא

סוגי 0 שונים == / ==== 31-10-17 16:01
 תלמוד ירושלמי
#2908

האם יש אפשרות ליצור case שונה ל: ($mi===0) בנפרד ול: ($mi==0)


לדף הקודםהמשכת לולאה - continue -הקודם
לתחילת הדףלתחילת הדף
הבא- include ו-requireלדף הבא