משפט ה Switch בשפת PHP

משפט ה Switch מזכיר מאוד את ה if כפי שהכרנו במאמר הקודם במשפט תנאי (if) בשפת PHP, אפשר להגיד שזה המחליף שלו כאשר נרצה להשתמש במקרי בדיקה מרובים, במקום לכתוב המון if .. elseif.. elseif .. else פשוט נכתוב משפט Switch, שהוא קצר, מובן וקליל. יש כאלה שלא יתחברו, כל אחד ואיך שנוח לו :).

תחביר ה Switch

<?php 
 switch (condition)
 { 
 case firstCase: ... ;
 case secondCase: ...;
 ...
 
 default: ...; 
 } 
?>

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

<?php 
    $number = 10; 
    switch ($number) 
    { 
        case 12: 
            echo "The value is 12";
        case 10: 
            echo "The value is 10"; 
        case 54: 
            echo "The value is 54";
        default: 
            echo "The value is not 12,10 or 54"; 
    } 
?>

 כפי שאתם רואים אנו בדקנו האם $number שווה ל 10, ומצאנו כי אכן במקרה השני הוא שווה ל 10 וביצענו את הקוד שבא מיד לאחר מכן שמדפיס לנו – The value is 10. אך אלה שבאמת הריצו את הקוד ראו שלא הודפס רק The value is 10 אלא מה שהודפס בפועל זה:

The value is 10The value is 54The value is not 12,10 or 54

למה ?, מכיוון שלאחר שהcase השני התבצע, אז גם כל השאר שאחריו כולל ה default, אנחנו אמורים למנוע את זה, וכדי באמת למנוע את זה עלינו להשתמש בפקודה חדשה ששמה break, דוגמא תקינה:

<?php 
    $number = 10; 
    switch ($number) 
    { 
        case 12: 
            echo "The value is 12";
            break;
        case 10: 
            echo "The value is 10"; 
            break;
        case 54: 
            echo "The value is 54";
            break;
        default: 
            echo "The value is not 12,10 or 54"; 
    } 
?>

עכשיו יודפס לנו בדיוק מה שרצינו – The value is 10. הבדיקה היא זהה ומרחשת באותה הדרך השינוי היחידי הוא כאשר ניכנס ל case מסויים, בתום ביצוע הקוד שנמצא בו, נפסיק את הריצה ונצא מ switch – הרי השגנו את מה שאנחנו רוצים. למה לא שמנו break ב default ?, בגלל שה default מתרחש בסוף (תמיד!) ואין אחריו עוד caseים, ככה שאין מה לבצע אחריו ו PHP תצא לבד מה switch :), אני מניח ששמתם לב שלא השתמשנו בסוגריים מסולסלים בין מקרה למקרה (case ל case) זה כי לא חייב לעומת שאר הפקודות שחובה.

אם הבנתם לעומק את השימוש ב switch ואתם חושבים שאתם יכולים להמשיך הלאה, נעבור למאמר שנלמד בו את לולאת For בשפת PHP :).