הרשם שאלות ותשובות רשימת חברים לוח שנה חיפוש הודעות מהיום סמן פורומים כנקראו

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 01-06-06, 10:08   # 1
BBman
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 31
הודעות: 608
שלח הודעה באמצעות MSN אל BBman

BBman לא מחובר  

[מדריך] 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 שכתבנו.

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

בהצלחה!
  Reply With Quote
ישן 01-06-06, 10:35   # 2
Tomer
Whatever
 
Tomer's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 7,039
שלח הודעה באמצעות MSN אל Tomer Send a message via Skype™ to Tomer

Tomer לא מחובר  

יפה מאוד
__________________
תומר
  Reply With Quote
ישן 01-06-06, 10:35   # 3
meshuga
הנהלת הפורום לשעבר
 
meshuga's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 7,601

meshuga לא מחובר  

מפגיז אתה הא?
נוסף למדריכים
  Reply With Quote
ישן 01-06-06, 10:39   # 4
BBman
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 31
הודעות: 608
שלח הודעה באמצעות MSN אל BBman

BBman לא מחובר  

ציטוט:
נכתב במקור על ידי meshuga
מפגיז אתה הא?
נוסף למדריכים
חחחח...עושה כמיטב יכולתי =]
  Reply With Quote
ישן 01-06-06, 11:05   # 5
-VladK-
הוסטסניון
 
-VladK-'s Avatar
 
מיני פרופיל
תאריך הצטרפות: Apr 2006
גיל: 33
הודעות: 2,182

-VladK- לא מחובר  

תודה אחי!!!
  Reply With Quote
ישן 01-06-06, 11:21   # 6
eXtaZa
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Dec 2005
הודעות: 288

eXtaZa לא מחובר  

כל הכבוד על המדריך!
אני רואה בזמן האחרון מתחילים לכתוב פה מדריכים...
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 

Tags
מבוא, מדריך למתחילים, מדריך php

כלים לאשכול
תצורת הצגה

חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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