הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   תכנות - מדריכים, code snippets (https://hosts.co.il/forums/forumdisplay.php?f=68)
-   -   [מדריך] PHP - מבנה בקרה - switch (https://hosts.co.il/forums/showthread.php?t=22993)

BBman 01-06-06 10:08

[מדריך] PHP - מבנה בקרה - switch
 
שלום לכולם.

מדריך זה בא במטרה ללמד מבנה בקרה בשם 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 שכתבנו.

במידה ושחכתי משהו , העירו לי.

בהצלחה!

Tomer 01-06-06 10:35

יפה מאוד :)

meshuga 01-06-06 10:35

מפגיז אתה הא?
נוסף למדריכים |קורץ| |winky|

BBman 01-06-06 10:39

ציטוט:

נכתב במקור על ידי meshuga
מפגיז אתה הא?
נוסף למדריכים |קורץ| |winky|

חחחח...עושה כמיטב יכולתי =]

-VladK- 01-06-06 11:05

תודה אחי!!!

eXtaZa 01-06-06 11:21

כל הכבוד על המדריך!
אני רואה בזמן האחרון מתחילים לכתוב פה מדריכים... :)


כל הזמנים הם GMT +2. הזמן כעת הוא 18:03.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ