מה ההבדל בין SWITCH ל-IF,IFELSE,ELSE ב-PHP? - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

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


xjj

Recommended Posts

מה ההבדל בין 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 הרבה פעמים.

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

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

קישור לתוכן
שתף באתרים אחרים

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

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

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

קישור לתוכן
שתף באתרים אחרים

מה לא ברור?

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'.

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...