אתה נמצא כאן יסודות השפה  >>  אופרטורים  >>  אופרטור ההשמה

אופרטור ההשמה

פעולת ההשמה נעשית ע"י האופרטור = (שווה). הערך המוחזר מההשמה הוא ערך ההשמה בעצמו, למשל "$a=4" מחזיר ערך 4. בנוסף להשמה הרגילה יש גם השמה משולבת, שילוב של אופרטור עם סימן ההשמה, למשל: "$a.="bye"", ששקול ל-"$a=$a."bye"".

ההשמה הרגילה היא השמה לפי ערך (assignment by value), אך ב-PHP4 יש גם השמה לפי מצביע (assignment by reference), שנעשה בצורה "$a=&$b". השמה לפי ערך מעתיקה ערך ממשתנה אחד לשני ויוצרת בלוק נפרד בזיכרון, והשמה לפי מצביע יוצרת משתנה נוסף שמצביע לאותו הבלוק בזיכרון. על-כן, בהשמה לפי ערך שינוי אחד המשתנים לא ישפיע על האחר, ובהשמה לפי מצביע שינוי של אחד המשתנים ישפיע על שתיהם.

<?php
  echo 'The value of the assignment ($a=3) is: '.($a=3)
/*הערך של ביטוי ההשמה הזה הוא
ערך ההשמה עצמו, כלומר הערך 3.
*/
."<BR>\n";
  $b=$a;
/*השמה לפי ערך (assigned by value).
המשתנים $a ו-$b מצביעים ל-2 בלוקים נפרדים בזיכרון,
שמכילים את הערך 3.
*/

  $c=&$a;
/*השמה לפי מצביע (assigned by reference).
המשתנים $a ו-$c מצביעים לאותו הבלוק בזיכרון,
שמכיל את הערך 3.
*/

  $b=5;
/*בבלוק הזיכרון שאליו מצביע $b נשמר הערך 5.
בלוק הזיכרון של המשתנים $a ו-$c לא השתנה כתוצאה מכך,
ולכן ערכם של $a ו-$c לא משתנה.
*/

  echo "\$a is $a , \$b is $b , \$c is $c<BR>\n";
  $a=7;
/*בבלוק הזיכרון שאליו מצביע $a נשמר הערך 7.
אבל המשתנה $c מצביע לאותו הבלוק,
ולכן ערכו של $c משתנה כתוצאה מכך ל-7.
*/

  echo "\$a is $a , \$b is $b , \$c is $c<BR>";
?>


תגובות בנושא

משהו 03-11-03 07:01
 יונתן גורן
#1357

לא הבנתי את ההשמה המשולבת... אז אם אני כותב:
$a.="bye"
אז $a שווה ל-"byebye" כלומר האופרטור מגדיר את המשתנה ואז מוסיף לו את הערך שהוא קבע?

השמה משולבת 01-12-04 12:02
 אסף
#1384

גם אני תלמיד חדש בPHP. אבל נראה לי שזה לא שונה i+=1 שיש ב C או JAVA. פשוט תחליף את:
$a.="byb"
ב:
$a = $a."bye"
ומכיוון ש $a
היה ריק לפני עכשיו אתה צובר בתוכו "bye"

תלוי בערך שיש בA 02-12-04 07:02
 עדי
#1425

אם הערך שהיה ב$a הוא bye אז כן, - השרשור ייתן "byebye"
ואשם הערך הקודם היה "hello" אז
$a.="bye"
יהיה שווה ל hellobye

זו דעתי...

לא הבנתי 08-12-04 04:02
 איתן בןאב
#1729

מה מיוחד ב $a.="bye"
מה עושה $a=a."bye" ?

ככה 07-12-06 20:00
 ניר וקנין
#2702

בהרבה שפות יש אפשרות לעשות string + string
לדוגמא $a="A"+"B" כדי לקבל $a="AB"
בPHP זה גם אפשרי פשוט במקום לשים + שמים .
כלומר ש$a="A"."B" יוצא $a="AB"


לדף הקודםאופרטורים אריתמטיים -הקודם
לתחילת הדףלתחילת הדף
הבא- אופרטורים על ביטיםלדף הבא