ABA


"מה הדרך הטובה ביותר לבחירה לפי CASE ב PHP - הסבר מפורט בפנים"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #20155 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 20155
code_blue  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.7.06
21280 הודעות, 7 פידבק, 14 נקודות
   14:35   19.08.13   
אל הפורום  
  מה הדרך הטובה ביותר לבחירה לפי CASE ב PHP - הסבר מפורט בפנים  
 
   אני בונה אתר והוא מקבל דרך GET שם כלשהו
ואז יש לי באותו INDEX מערך של בדיקה
אם 1 אז ...
אם 2 אז ...
וכך הלאה

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


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  יש מלא אפשרויות או קצת? משה הלולן 19.08.13 15:11 1
     הרבה פחות מ50 code_blue  19.08.13 15:31 2
         לפי דעתי BLACK DOG  19.08.13 16:05 3
             יש גם את האופציה הזאת משה הלולן 19.08.13 16:12 4
                 גם אני חשבתי על זה code_blue  19.08.13 18:15 5
  הפתרון הטוב ביותר למקרים כאלה הוא לבנות מבנה נתונים מתאים dyermaker  19.08.13 19:00 6
     ואיך הייית מציע לבנות את זה? code_blue  19.08.13 19:02 7
         למה לא להשתמש ב-DATABASE בשביל זה? ID מול לינק? Ice Cold  19.08.13 19:07 8
             צודק אבל כרגע אין לי DB מוכן לזה code_blue  19.08.13 19:09 9
                 המ.. כמובן שזה לא אידאלי אבל לא בלתי אפשרי לטיפול... Ice Cold  19.08.13 19:20 10
                     מה לגבי XML האם יש מצב שיהיה יותר קל לעבוד? code_blue  19.08.13 19:22 11
  השאלה שלך היא מצויינת, last_test 20.08.13 11:26 12
     הצלחת לבלבל אותי code_blue  20.08.13 11:31 13
         קודם כל הייתי מציע לך ליישר את הקוד לשמאל, last_test 20.08.13 11:38 14
             עכשיו הבנתי אותך code_blue  20.08.13 11:39 15
                 בדקתי ועובד לי מעולה ! code_blue  20.08.13 12:30 16

       
משה הלולן לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.6.13
4818 הודעות, 8 פידבק, 14 נקודות
   15:11   19.08.13   
אל הפורום  
  1. יש מלא אפשרויות או קצת?  
בתגובה להודעה מספר 0
 
   סך הכול אם מדובר אפילו ב50 אפשרויות זה ממש מהיר, הדבר האחרון שיש לדאוג לגביו, כשיגיע רגע האמת והשרתים שלך יתחילו לגמגמם יהיה לך יותר זול לקנות שרת נוסף

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
code_blue  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.7.06
21280 הודעות, 7 פידבק, 14 נקודות
   15:31   19.08.13   
אל הפורום  
  2. הרבה פחות מ50  
בתגובה להודעה מספר 1
 
   מדובר על דף שלפי מה שמקבל בGET הוא מכניס ערכים לIFRAME
נגיד אם 1 אז WEB יהיה X
אם 2 אז WEB יהיה Y


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
BLACK DOG 
חבר מתאריך 1.8.02
150 הודעות, דרג אמינות חבר זה
   16:05   19.08.13   
אל הפורום  
  3. לפי דעתי  
בתגובה להודעה מספר 2
 
   אין דרך אחרת חוץ מסוייצ' או elseif אבל זה יהיה אותו רעיון, אתה יכול אולי להכניס את כל הפרמטרים למערך אחד ולהשוות מול מערך מוכן שאתה כבר יודע מה הוא אמור לעשות, אבל שוב אולי מבחינת זמנים זה יכול להיות יותר מהר , אבל נראה לי מבחינת יעילות כולם יהיה פחות או יותר אותו דבר. אבל זה תלוי גם אם אתה צריך לעבור על כל האפשרויות ,2 פרמטרים -> 4 אפשרויות , 3 פרמטרים -> 8 אפשרויות וכו' ...

Redot


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
משה הלולן לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.6.13
4818 הודעות, 8 פידבק, 14 נקודות
   16:12   19.08.13   
אל הפורום  
  4. יש גם את האופציה הזאת  
בתגובה להודעה מספר 3
 
   אני לא ממליץ עליה כי היא ידנית מדי כזאת ולא בטוח שהיא יותר יעילה.

לדוגמא אתה מקבל במשתנה x
אז אתה יוצר קובץ x.html
בקובץ עצמו אתה שם את הiframe
ואז בעצם אין תהליך של "חשיבה"
לדוגמא מכניסים hello
אז זה שם iframe ל hello.html
ובhello.html יש את הiframe לדף המקורי


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
code_blue  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.7.06
21280 הודעות, 7 פידבק, 14 נקודות
   18:15   19.08.13   
אל הפורום  
  5. גם אני חשבתי על זה  
בתגובה להודעה מספר 4
 
   חבל שאי אפשר להגיע לקטע מתוך קובץ
נגיד לפצל לשורות או משהו כזה ואז להגיד לו קח רק משורה 5 וכדו


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dyermaker 
חבר מתאריך 4.2.03
1644 הודעות, דרג אמינות חבר זה
   19:00   19.08.13   
אל הפורום  
  6. הפתרון הטוב ביותר למקרים כאלה הוא לבנות מבנה נתונים מתאים  
בתגובה להודעה מספר 0
 
   ולא להשתמש בCase או If/Elseif

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
code_blue  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.7.06
21280 הודעות, 7 פידבק, 14 נקודות
   19:02   19.08.13   
אל הפורום  
  7. ואיך הייית מציע לבנות את זה?  
בתגובה להודעה מספר 6
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק, 36 נקודות
   19:07   19.08.13   
אל הפורום  
  8. למה לא להשתמש ב-DATABASE בשביל זה? ID מול לינק?  
בתגובה להודעה מספר 7
 
ואז שאילתא פשוטה תיתן לך את הלינק, ותוכל להוסיף כמה שתרצה...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
code_blue  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.7.06
21280 הודעות, 7 פידבק, 14 נקודות
   19:09   19.08.13   
אל הפורום  
  9. צודק אבל כרגע אין לי DB מוכן לזה  
בתגובה להודעה מספר 8
 
   אולי צעד הבא אני אכניס
בדיוק העברתי את האתר לשרת אחר ועוד לא נכנסתי שם לDB

אני מפחד מעברית - אצלי מה שמגיע מה GET הוא בעברית
כלומר אצטרך שהוא יהיה ה ID שלי - הוא יהיה המפתח


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק, 36 נקודות
   19:20   19.08.13   
אל הפורום  
  10. המ.. כמובן שזה לא אידאלי אבל לא בלתי אפשרי לטיפול...  
בתגובה להודעה מספר 9
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
code_blue  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.7.06
21280 הודעות, 7 פידבק, 14 נקודות
   19:22   19.08.13   
אל הפורום  
  11. מה לגבי XML האם יש מצב שיהיה יותר קל לעבוד?  
בתגובה להודעה מספר 10
 
   לקחת רק מידע ספציפי?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
last_test
חבר מתאריך 20.8.13
328 הודעות, דרג אמינות חבר זה
   11:26   20.08.13   
אל הפורום  
  12. השאלה שלך היא מצויינת,  
בתגובה להודעה מספר 0
 
   אני אישית נורא נמנע מלהשתמש ב-switch/case בקוד שאני כותב אלא אם מדובר במקרים שכמעט ולא מכילים פונקציונליות.

לרוב אני מעדיף להחזיק מבנה נתונים בקוד (נניח אובייקט) שכל property name שלו הוא הindex שכביכול מגיע מה-url שלך לדוגמא:


var Events = {
'click': function () {
....
},
'mouseover': function () {
....
}
}

var param = "click" //query string param

if (Events[param] && _.isFunction(Events[param])) {
Events[param](x,y,z,etc....);
}


||

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
code_blue  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.7.06
21280 הודעות, 7 פידבק, 14 נקודות
   11:31   20.08.13   
אל הפורום  
  13. הצלחת לבלבל אותי  
בתגובה להודעה מספר 12
 
   לא ממש הבנתי איך זה חוסך לי את הCASE
אני עובד בPHP וכל CASE יש לו בתוכו 2 משתנים

לדוגמא


if ($get=='a')
{
$web=www.google.com
$name=google
}
elseif ($get=='b')
{
$web=www.facebook.com
$name=facebook
}

יש בערך כ8-10 שאילתות כאלה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
last_test
חבר מתאריך 20.8.13
328 הודעות, דרג אמינות חבר זה
   11:38   20.08.13   
אל הפורום  
  14. קודם כל הייתי מציע לך ליישר את הקוד לשמאל,  
בתגובה להודעה מספר 13
 
   עכשיו נראה שלא הבנת את ההודעה שלי, זה בסדר גמור אני ארחיב + אצרף את הדוגמא שלך.

הדוגמא שלי התייחסה לכך שה-cases שלך מבצעים פונקציונליות שונה (לוגיקה...), פה מדובר אך ורק בהשמה של נתונים, אני מסכים עם החברים למעלה שאולי דטאבייס היה עדיף פה במידה ויש לך כמות גדולה של נתונים, במידה ולא הקוד הבא תמיד יכול להיות רלוונטי.


$webs = array(
"a" => array(
"address" => "http://google.com",
"name" => "google"
),
"b" => array(
"address" => "http://facebook.com",
"name" => "facebook"
)
);


$get = $_GET['param'];

if (isset($webs[$get])) {
$web = $webs[$get]['address'];
$name = $webs[$get]['name'];
}



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
code_blue  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.7.06
21280 הודעות, 7 פידבק, 14 נקודות
   11:39   20.08.13   
אל הפורום  
  15. עכשיו הבנתי אותך  
בתגובה להודעה מספר 14
 
   נראה פתרון מעולה מקווה שלא יעשה בעיות עם שפת הקודש חח


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
code_blue  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.7.06
21280 הודעות, 7 פידבק, 14 נקודות
   12:30   20.08.13   
אל הפורום  
  16. בדקתי ועובד לי מעולה !  
בתגובה להודעה מספר 15
 
   ובאמת נראה קצת יותר הגיוני


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net