לפעמים עלולה להיווצר בעיה כאשר המשתנה של השם הוא מערך, או שהמשתנה המיוצג הוא מערך. למשל $$a[1], יכול להתפרש כך ששם המשתנה הוא $a[1], או בדרך אחרת ששם המשתנה הוא $a, והמשתנה המיוצג הוא מערך. כדי לפתור את כפל המשמעות הזו נכתוב ${$a[1]} עבור ש-$a[1] הוא שם המשתנה, ו-${$a}[1] עבור ש-$a הוא שם המשתנה.
תגובות בנושא
ואם אכתוב $$$a?
05-12-02 01:01 תומק
#144
ועם ארבעה או חמישה סימני דולר?
זה יתפרש כ: ${${$a}}?
ועוד שאלה:
מדוע אסור לכתוב:
echo "$a $$a?" ?
תודה.
$$$ ויותר
05-12-02 02:02 אלי חן (מנהל)
#146
זה נכון לא רק עבור שני $ אלא גם יותר. PHP עובדת כאן בצורה רקורסיבית.
כאשר רוצים להוציא לפלט משתנים עם יותר מ $ אחד, יש להשים את המשתנה בתוך סוגריים מסולסלים, למשל:
;"{echo "{$$a
או פשוט לשרשר למחרוזת.
לא הבנתי....
01-12-03 05:02 יניב
#664
לא הבנתי למה תשובה לאחת השאלות בנושא משתנים, אנילא זוכר מה מספר השאלה אך התשובה הייתה 120 200, אם תוכל להסביר לי למה אני אודה לכם מאוד.
200, 130
01-12-03 16:01 אלי חן (מנהל)
#671
A מאותחל עם 100, B מאותחל עם 200, ושניהם נמצאים ברמה הגלובלית.
בפונקציה שינינו ערכים גם ל A וגם ל B. אך B הוא משתנה מקומי של הפונקציה, ואת A לקחנו כמשתנה גלובלי. לכן שינוי ערכו של A בתוך הפונקציה תשפיע על המשתנה הגלובלי A, ושינוי ערכו של B בתוך הפונקציה לא תשפיע על המשתנה הגלובלי B. על-כן B יישאר 200.
בפונקציה יש משתנה סטטי, a שערכו 10. משתנה סטטי שומר את ערכו גם אחרי שיוצאים מהפונקציה. לכן בקריאה הראשונה לפונקציה, ערכו של a הוא 10, ואז מוסיפים לו עוד 10, ובקריאה השניה לפונקציה ערכו הוא 20. היו שתי קריאות לפונקציה, לכן ל A מוסיפים 10 ואח"כ עוד 20, ויוצא שערכו 130.
לא עדיף מערכים?
02-12-03 01:01 יולו
#676
לא כל כך הבנתי מה הקטע שלשים משתנה בתוך משתנה.. זה קצת מסורבל וקשה להבין.. אבל לפיח מה שאני הבנתי עדיף כבר להשתמש במערך ולתת לו שתי ערכים.. לא ככה?
$a = array ('hello' , 'world')
?
מערכים במקום שם משתנה שהוא משתנה
02-12-03 01:01 אלי חן (מנהל)
#679
אממ.. לא תמיד.. לפעמים יש יתרונות קלים יותר עבור שם משתנה שהוא משתנה.. למשל קריאה לפונקציה כאשר שם הפונקציה שמורה בתוך משתנה.
לא ממש הבנתי...
03-11-03 07:01 יונתן גורן
#1355
רגע... אז אם אני אכתוב:
$vn= "my_name"
$$vn= "is jonatan"
echo $vn
echo "<br>/n"
echo $ {$vn}
זה יחזיר
my name
is jonatan?
יש טעות
07-12-06 20:00 ניר וקנין
#2700
יש טעות בבחן את עצמייך...
למרות שa הוא static והוא שומע על המיספר כמו שאמרת
פעם השניה שאתה נכנס לפונקציה אתה שוב מציב בו 10
לפני שאתה מצרף אותו לA ולכן התשובה הנכונה היא
120,200 ולא 130,200