![]() |
כמה שאלות..
שלום.
יש לי כמה שאלות: 1. רציתי לקבל הסבר פשוט - by-referenct - לא הבנתי מה זה ממש אומר.. בגדול, הבנתי (ויכול להיות שטעיתי) שזה כאילו שולח הפניה במקום ערך חדש. כלומר אם אני עושה: PHP קוד:
זה נכון? כמו כן, מה זה אומר בפונקציות? שאם אני שולח הפניה ומשנה את הפרמטר המתקבל, זה משתנה גם בתוכנית? ----------------------- 2. הביטוי: PHP קוד:
|
1. הסימן & מחבר בין הערך הקיים לערך החדש (במקרה שהבאת בין המשתנה $a ל-$b).
2. תנסה לשים פסיק, אולי זה יעבוד: example(,$required); או שבפונקציה עצמה פשוט תהפוך את הסדר: function example($required, $d = 3) |
ציטוט:
רק מחזק את אחד, זה אומר שכל שינוי של ערך שמתקבל למשתנה b גם a מושפע ומקבל את הערך של b כלומר שתי המשתנים זהים רק עם שמות שונים. |
ב1 צדקת. הרעיון הוא ששני המשתנים הם שמות שונים לאותו תא בזכרון. אם אתה עושה לדוגמה פונקציה שמקבל מערך ומחליפה את כל התאים שלו ב1 ולא מחזירה כלום המערך שתשלח ישאר אותו דבר. אם תשלח אותו בref אז הוא יוחלף בפועל כיוון שזה אותו מערך ולא העתק שלו.
ב2 הדוגמה לפונקציה שנתת לא חכמה. אם הפרמטר הראשון הוא אופציונאלי והשני חובה, זה הופך למעשה גם את הראשון לחובה. |
call by value - הפונקציה מקבלת העתק של המשתנה. כלומר, כל עיבוד של המשתנה הנוכחי לא ישפיע על המשתנה המקורי שנשלח.
call by address/reference - שולח בעצם את המכוון/מצביע לאותו תא בזכרון. משמע, כל עיבוד על אותו משתנה ישפיע על המשתנה המקורי. |
בקשר לראשון הבנתי =]
בקשר לשני - אני שואל אם ברגע שאני כותב את זה ככה, אין דרך לשלוח רק את הפרמטר השני, בעזרת משהו כמו PHP קוד:
|
ציטוט:
|
גם אם כתבת בפונקציה $a=3 ושלחת ערך למקום הזה, אז זה ישכתב לך את הערך של a.
לכן אתה צריך פשוט להחליף את הסדר, כמו שכבר אמרתי לך פה וגם אחרים.. |
בואו נעשה קצת סדר..
--- reference(רפרנס או בעברית מצביע או בקיצור לפעמים ref) - הוא למעשה המצביע(מעיין כתובת) של המשתנה. למעשה כשאני שולח פרמטר כלשהוא בתצורת רפרנס אני מאפשר גישה מלאה אל המשתנה. כלומר- בשליחת משתנה רגילה אני רק מקבל את ערך המשתנה. בשליחת משתנה בתצורת רפרנס כל פעולה שאבצע על הרפרנס תושפע. דוגמאות: בדוגמה זו- הצבתי את a כערך של b PHP קוד:
PHP קוד:
למעשה כאשר אני שולח למתודה/פונקציה ארגומנט עם מצביע(רפרנס), כלומר הפעולות שאבצע עליו ישפיעו על תכולת המשתנה, ולא רק הערך. |
שלחת לכתוב & בקוד השני
|
כל הזמנים הם GMT +2. הזמן כעת הוא 17:45. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ