switch

פקודת switch מקבילה לסידרה של פקודות IF באותו ביטוי . במקרים בהם נרצה להשוות את ערכו של משתנה מסויים ( או ביטוי ) לערכם של ערכים רבים ולבצע פעולות מסויימות המתאימות לערך מסויים של המשתנה . זהו בדיוק המצב בו נמצא שימוש לפקודת switch .

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






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






בדוגמה זו , אם ערכו של $i שווה ל-0 ,תתבצע הרצה של כל פקודות ה-print ! אם ערכו שווה ל-1 תתבצע הרצה של שתי הפקודות האחרונות ואם ערכו יהיה שווה ל-2 תרוץ רק פקודת ה-print האחרונה ונקבל את התוצאה המתבקשת . כלומר , חשוב לזכור את פקודות ה - break ( למרות שיתכן מצב בו נמנע להשתמש בפקודה זו בכוונה ) .

בפקודת switch הביטוי מוערך פעם אחת בלבד והתוצאה נבדקת מול ערכי פקודות case . בפקודת elseif הביטוי מוערך פעם נוספת . אם יש לבצע תנאי מורכב יותר מבדיקה פשוטה של and או or לביטוי , מומלץ להשתמש ב - switch שיבצע את המלאכה במהירות גבוהה יותר מאשר מהירותם של רצף פקודות if ו-elseif .

רשימת הפקודות של משפט case יכולה להיות ריקה במידה ונרצה להמשיך להרצת משפט ה-case הבא .






קיים סוג של משפט case היוצא דופן , זהו משפט ה-default . במידה והשתמשנו במשפט case מסוג default , הוא יתאים למצב בו אין התאמה של ביטוי ה - switch לאף אחד ממשפטי ה-case ולכן יש למקמו בסוף לאחר בדיקת כל ערכי ה-case . לדוגמה :






הביטוי במשפט ה - case יכול להיות כל משתנה מסוג פשוט כמו מספר אינטגרלי ( integer ) או מספר ריאלי (float ) או מחרוזת . אי אפשר להשתמש במערך אלא אם הוא מיוצג בסוג משתנה פשוט .

גם התחביר האלטרנטיבי נתמך , ראה בפרק תחביר אלטרנטיבי למבני-בקרה .