שלום לכולם.
מדריך זה בא במטרה ללמד
מבנה בקרה בשם
switch אשר מטרתו היא לרשום בצורה מקוצרת יותר , או נוחה יותר מס' תנאים הקשורים אחד לשני במקביל ל-
if ו-
elseif , אך לא תמיד יעזור בכל משימה אך יקל עליכם כאשר אתם רוצים להתנות מס' רב של תנאים.
אז , כיצד כותבים מבנה switch ? ע"פ הנוסחה הכללית :
PHP קוד:
switch(var to check)
{
case 1;
.........
case 2;
.........
}
אז מה בעצם המבנה הנ"ל עושה ?
כמו שרואים , לאחר המילה השמורה
switch באות סוגריים , ובתוכם כתבתי "var to check" שמשמעו היא "משתנה לבדיקה" או כל סוג של נתון אפשרי לבדיקה.
מכאן רואים כי המשתנה המותנה נמצא בין סוגרי ה-
switch.
לאחר מכן כתבתי סוגר מסולסל , אשר הוא פותח את תחילת כתיבת התנאים , וסוגר אחר הפוך מסיים את כתיבת התנאים.
לאחר מכן כתבתי 2 מקרים :
PHP קוד:
case 1;
.........
case 2;
.........
מה זה אומר ?
הסבר : משמעות אלו היא שכתבתי שני מקרים , בשניהם שאלתי "האם המשתנה המותנה שווה ל-?" כלומר , מכאן ניתן להבין כי כתיבה פשוטה זו של case n; בודקת האם המשתנה המותנה שווה למס' שרשמנו אחרי case , ואם כן יתבצעונה הפקודות הרצויות , או במקרה זה הנקודות.
נדגים שימוש במבנה switch למשימה פשוטה :
PHP קוד:
<?php
$a=rand(0,2);
switch($a)
{
case 1;
echo "case is 1";
case 2;
echo "case is 2";
}
?>
מה שכאן עשיתי , זה שהגדרתי משתנה בשם a והכנסתי לו ערך רנדומלאי בטווח שבין 0 ל-2 , לאחר מכן כתבתי מבנה בקרה
switch אשר בודק לפיו האם a שווה למס' שרשמתי בכל אחד מהמקרים.
בעיה : שמתם לב מה קרה כאשר מקרה 1 בוצע ?
נכון , גם מקרה 2 בוצע לאחר ש-1 בוצע , ולמה זאת ? כיוון שללא פקודת הפרדה (שתילמד כעת) המקרים שלאחר המקרה שנבחר מבוצעים גם כן, לכן ניתן לכתוב
break; לאחר הפקודות שאנו רוצים לבצע לאחר שהתנאי אומת , לדוגמא נוסיף את הפקודה הנ"ל למבנה שלנו , ונשים לב כי כעת המקרה מבוצע מלבדו ללא המקרים הבאים :
PHP קוד:
<?php
$a=rand(0,2);
switch($a)
{
case 1;
echo "case is 1";
break;
case 2;
echo "case is 2";
break;
}
?>
הערה : אם תשימו לב , התנאי האחרון כאילו נחשב עם break גם ללא כתיבתו.
נוסף על בדיקת השווה , ניתן לבצע כל מני בדיקות למשל האם משתנה מסויים גדול ממס' מסויים , קטן וכו'... :
PHP קוד:
<?php
$a=rand(-20,20);
switch($a)
{
case $a>0;
echo "case is >0 ";
break;
case $a<0;
echo "case is < 0";
break;
}
?>
אפשר גם לבדוק מחרוזות , כמובן שיש להציב גרשיים לפני ואחרי המחרוזת כאשר בודקים אותן :
PHP קוד:
<?php
$a="hi";
switch($a)
{
case "hello";
echo "case is hello ";
break;
case "hi";
echo "case is hi";
break;
}
?>
default ;
מה קורה כאשר אף אחד מהתנאים שלנו לא נכון / מאומת ?
לכן , ניתן לכתוב את הפקודה
default אשר מבצעת את הפקודות שאחריה , במידה ואף אחד מה"קייסים" (מקרים) שלנו אמת , כהמלצה שלי כתבו את ה-
default לאחר התנאים , אך אין זה משנה , אך אם תשימו
default בתחילת או אמצע הקוד , הקפידו על כתיבת
break.
כתיבת
default :
PHP קוד:
<?php
$a="string";
switch($a)
{
case "hello";
echo "case is hello ";
break;
case "hi";
echo "case is hi";
break;
default;
echo "case is default";
}
?>
כאמור a מכיל את המחרוזת "string" ולכן הוא לא שווה למחרוזות "hi" או "hello" שהן המקרים שלנו , ולכן יתבצע ה-
default שכתבנו.
במידה ושחכתי משהו , העירו לי.
בהצלחה!