פקודת
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
)
או
מחרוזת
.
אי
אפשר
להשתמש
במערך
אלא
אם
הוא
מיוצג
בסוג
משתנה
פשוט
.
גם
התחביר
האלטרנטיבי
נתמך
,
ראה
בפרק
תחביר
אלטרנטיבי
למבני-בקרה
.