עבור לתוכן

מה ההבדל בין SWITCH ל-IF,IFELSE,ELSE ב-PHP?

Featured Replies

פורסם

מה ההבדל בין SWITCH ל-IF,IFELSE,ELSE ב-PHP?

שאלה נוספת, בקוד למטה, מישהו יכול להסביר לי למה משמש האות D במתוך המרכאות והסוגריים בשורה של המשתנה?

תודה.

<?php 
$d=date("D");
switch ($d)
{
case "Sun":
echo "Have a nice week";
break;
case "Fri":
echo "Have a nice weekend";
break;
case "Sat":
echo "Shabat Shalom";
break;
default:
echo "Have a nice day";
break;
}

?>

פורסם

switch case זה בסה"כ דרך אלגנטית יותר לעשות if else הרבה פעמים.

פורסם
switch case זה בסה"כ דרך אלגנטית יותר לעשות if else הרבה פעמים.

כאמרה כללית זה לא ממש מדויק - אני לא יודע ספציפית לגבי PHP, יכול להיות שהמימוש שם זהה. אבל בהרבה שפות אחרות יש הבדלים במימוש בין switch ל-if else. לא מדובר רק באלגנטיות.

בד"כ זה לא דרמטי אבל יכולים להיות הבדלים גם בביצועים, למשל (לרוב לטובת ה-switch).

פורסם
  • מחבר
כאמרה כללית זה לא ממש מדויק - אני לא יודע ספציפית לגבי PHP, יכול להיות שהמימוש שם זהה. אבל בהרבה שפות אחרות יש הבדלים במימוש בין switch ל-if else. לא מדובר רק באלגנטיות.

בד"כ זה לא דרמטי אבל יכולים להיות הבדלים גם בביצועים, למשל (לרוב לטובת ה-switch).

מישהו יכול פרט?

פורסם

טוב, שיקולי יעילות בד"כ לא רלוונטים ברמות כאלה ב-PHP. לרוב גם העלות הזניחה הנוספת לא שווה את הקריאות הנמוכה יותר של הקוד.

פורסם
  • מחבר
טוב, שיקולי יעילות בד"כ לא רלוונטים ברמות כאלה ב-PHP. לרוב גם העלות הזניחה הנוספת לא שווה את הקריאות הנמוכה יותר של הקוד.

מה?

פורסם

מה לא ברור?

Switch זו דרך יפה לכתוב תנאי שמלא ב״אחרת עם״ בדרך מסודרת ומקוצרת.

החסרון, כפי שטוענים מעליי, שהמימוש קצת פחות טוב מבחינת ביצועים.

עם זאת, למרות הירידה הקלה בביצועים, רצוי לעטוף תנאי ארוך שכזה בswitch כדי לשפר הקריאות, כלומר, שתוכניתן אחר שרואה את הקוד יבין בקלות מה עשית שם.

פורסם

נוצר פה קצת בלבול, switch הוא כמעט תמיד עדיף כי מעבר לעובדה שהוא קריא יותר ( "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.") הוא גם זה שלפעמים יש לו את היתרון (אומנם קל) בביצועים.

פורסם

הייתה לי תחושה שקראתי ״לרוב לרעת הswitch״:lol:

עריכה: אבל הרעיון ברור: אם הבחירה היא בין קריאות לשיפור ביצועים זניח-עדיף שהקוד יהיה כמה שיותר קריא כדי להקל על קריאותו ותחזוקתו.

פורסם
  • מחבר

תודה.

במה מתבטא שיפור בביצועים של IF וכו' לעומת SWITCH?

שאלה נוספת בקשר למערכים (array).

אפשר לגשת לערך מסוים במערכך על ידי:

echo $var [0];

ואפשר גם על ידי:

array (0=>"red",1=>"blue);

נתקלתי בזה פה:

http://www.codecademy.com/courses/web-beginner-en-8a35h/0/6?curriculum_id=5124ef4c78d510dd89003eb8

ואני לא כל כך מבין איך נכתב הקוד בדוגמה השניה שהבאתי וגם מה ההבדל בינהם, האם גם פה זה דרך נוספת לכתוב קוד יותר קצר?

פורסם

השיפור בביצועים בין switch ל if\else מאוד זניח בתכנות php נורמטיבי.

אם תעשה לולאה שחוזרת על עצמה אלפי פעמים, אז כן תרגיש, בסופו של דבר, ביצועים (הקוד יסיים מהר יותר) טובים יותר לטובת ה switch.

בדוגמה הראשונה אתה מוציא פלט, התא הראשון במערך 'var'.

הדוגמה השנייה היא הגדרת מערך. אין שום קשר בין הדוגמאות מלבד זה שבשניהם מדובר במערכים.

פורסם

הפואנטה היא ש-switch גם יותר קריא וגם בעל ביצועים יותר טובים (לא תמיד, אבל בהכרח לא יותר איטי מ-if). אין סיבה לעשות ערימה של if else אם ניתן לעשות switch.

פורסם

הקריאות של switch זה דבר סובייקטיבי לגמרי, לעיניים שלי esle if הרבה יותר ברור. (ובכל מקרה המבנה שלהם דומה מספיק בשביל שלא יהיה שום היגיון בלקרוא לif else "ערימה").

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים