הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 21-07-10, 22:42   # 1
SarafC
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Apr 2008
הודעות: 511

SarafC לא מחובר  

כמה שאלות..

שלום.

יש לי כמה שאלות:

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

PHP קוד:
$a 10;
$b 20;
$a = &$b;
$b 30;
echo 
$a
אז יודפס 30..

זה נכון?

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

-----------------------

2. הביטוי:

PHP קוד:
function example($d 3$required)
{
}
 
example($required); 
לא תקין מכיוון שהתוכנית לא תדע לאן אני שולח את הפרמטר. אם בכל זאת אני רוצה לשלוח רק לפרמטר השני $required ולהשאיר את ברירת המחדל של הראשון, איך אני עושה את זה / עוקף את הבעיה?
__________________
בברכה, שרף כהן
  Reply With Quote
ישן 21-07-10, 23:13   # 2
~The_Sultan~
חבר על
 
מיני פרופיל
תאריך הצטרפות: Oct 2008
הודעות: 771

~The_Sultan~ לא מחובר  

1. הסימן & מחבר בין הערך הקיים לערך החדש (במקרה שהבאת בין המשתנה $a ל-$b).
2. תנסה לשים פסיק, אולי זה יעבוד:
example(,$required);
או שבפונקציה עצמה פשוט תהפוך את הסדר:
function example($required, $d = 3)
  Reply With Quote
ישן 22-07-10, 10:00   # 3
Hagaibl
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Jul 2010
הודעות: 214

Hagaibl לא מחובר  

ציטוט:
נכתב במקור על ידי ~The_Sultan~ צפה בהודעה
1. הסימן & מחבר בין הערך הקיים לערך החדש (במקרה שהבאת בין המשתנה $a ל-$b).
2. תנסה לשים פסיק, אולי זה יעבוד:
example(,$required);
או שבפונקציה עצמה פשוט תהפוך את הסדר:
function example($required, $d = 3)


רק מחזק את אחד, זה אומר שכל שינוי של ערך שמתקבל למשתנה b גם a מושפע ומקבל את הערך של b כלומר שתי המשתנים זהים רק עם שמות שונים.
__________________
בברכה,
חגי בלוך גדות.
  Reply With Quote
ישן 22-07-10, 11:27   # 4
Shay Ben Moshe
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2007
הודעות: 1,397

Shay Ben Moshe לא מחובר  

ב1 צדקת. הרעיון הוא ששני המשתנים הם שמות שונים לאותו תא בזכרון. אם אתה עושה לדוגמה פונקציה שמקבל מערך ומחליפה את כל התאים שלו ב1 ולא מחזירה כלום המערך שתשלח ישאר אותו דבר. אם תשלח אותו בref אז הוא יוחלף בפועל כיוון שזה אותו מערך ולא העתק שלו.
ב2 הדוגמה לפונקציה שנתת לא חכמה. אם הפרמטר הראשון הוא אופציונאלי והשני חובה, זה הופך למעשה גם את הראשון לחובה.
__________________
שי בן משה - בונה אתרים
חותך אתרים, ומתכנת צד לקוח וצד שרת.
  Reply With Quote
ישן 22-07-10, 18:59   # 5
liorclub
חבר על
 
מיני פרופיל
תאריך הצטרפות: Jan 2007
גיל: 39
הודעות: 756
שלח הודעה באמצעות ICO אל liorclub שלח הודעה באמצעות MSN אל liorclub

liorclub לא מחובר  

call by value - הפונקציה מקבלת העתק של המשתנה. כלומר, כל עיבוד של המשתנה הנוכחי לא ישפיע על המשתנה המקורי שנשלח.
call by address/reference - שולח בעצם את המכוון/מצביע לאותו תא בזכרון. משמע, כל עיבוד על אותו משתנה ישפיע על המשתנה המקורי.
__________________
ליאור
  Reply With Quote
ישן 22-07-10, 19:12   # 6
SarafC
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Apr 2008
הודעות: 511

SarafC לא מחובר  

בקשר לראשון הבנתי =]

בקשר לשני - אני שואל אם ברגע שאני כותב את זה ככה, אין דרך לשלוח רק את הפרמטר השני, בעזרת משהו כמו

PHP קוד:
functionName(,$required
או משהו כזה...
__________________
בברכה, שרף כהן
  Reply With Quote
ישן 22-07-10, 20:05   # 7
Hagaibl
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Jul 2010
הודעות: 214

Hagaibl לא מחובר  

ציטוט:
נכתב במקור על ידי SarafC צפה בהודעה
בקשר לראשון הבנתי =]

בקשר לשני - אני שואל אם ברגע שאני כותב את זה ככה, אין דרך לשלוח רק את הפרמטר השני, בעזרת משהו כמו

PHP קוד:
functionName(,$required
או משהו כזה...
תחליף פשוט את הסדר.
__________________
בברכה,
חגי בלוך גדות.
  Reply With Quote
ישן 22-07-10, 21:26   # 8
~The_Sultan~
חבר על
 
מיני פרופיל
תאריך הצטרפות: Oct 2008
הודעות: 771

~The_Sultan~ לא מחובר  

גם אם כתבת בפונקציה $a=3 ושלחת ערך למקום הזה, אז זה ישכתב לך את הערך של a.
לכן אתה צריך פשוט להחליף את הסדר, כמו שכבר אמרתי לך פה וגם אחרים..
  Reply With Quote
ישן 23-07-10, 11:19   # 9
AlmogBaku
חבר וותיק
 
AlmogBaku's Avatar
 
מיני פרופיל
תאריך הצטרפות: Nov 2007
מיקום: מודיעין
הודעות: 1,022

AlmogBaku לא מחובר  

בואו נעשה קצת סדר..
---

reference(רפרנס או בעברית מצביע או בקיצור לפעמים ref) - הוא למעשה המצביע(מעיין כתובת) של המשתנה.
למעשה כשאני שולח פרמטר כלשהוא בתצורת רפרנס אני מאפשר גישה מלאה אל המשתנה.

כלומר- בשליחת משתנה רגילה אני רק מקבל את ערך המשתנה. בשליחת משתנה בתצורת רפרנס כל פעולה שאבצע על הרפרנס תושפע.


דוגמאות:

בדוגמה זו- הצבתי את a כערך של b
PHP קוד:
$a=$b
בדוגמה זו- הצבתי את a כמצביע של b. וכעת a היא כמו "שם נרדף" ל b
PHP קוד:
$a=$b

למעשה כאשר אני שולח למתודה/פונקציה ארגומנט עם מצביע(רפרנס), כלומר הפעולות שאבצע עליו ישפיעו על תכולת המשתנה, ולא רק הערך.
  Reply With Quote
ישן 23-07-10, 12:08   # 10
~The_Sultan~
חבר על
 
מיני פרופיל
תאריך הצטרפות: Oct 2008
הודעות: 771

~The_Sultan~ לא מחובר  

שלחת לכתוב & בקוד השני
  Reply With Quote
השב

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


חוקי פירסום
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. הזמן כעת הוא 17:58.

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