call by value
در php وقتی تابعی داریم و درون تابع یک متغیر تعریف می کنیم تنها درون تابع این مقدار متغیر قابل دسترسی است.
مثلا در این مثال من یک تابع دارم که یک مقدار متغیر می گیرد. یک عدد اضافه می کند و آن را چاپ می کند.
<?php function addnum($x){ $x++; echo $x; } $num = 10; addnum($num); echo '<br>'; echo $num;
من اول تابع را صدا زده ام که نتیجه عدد 11 را نمایش می دهد
بعد هم متغیری که به تابع پاس داده ام را چاپ کردم متغیر همان مقدار اولیه یعنی عدد 10 است و تغییری نکرده.
این حالت call by value است.
Call By Reference
حالا اگر یک علامت & کنار پارامتر تابع بگذاریم هر مقداری که در تابع به متغیر اعمال شود در بیرون از تابع هم به همان مقدار تغییر خواهد کرد به این شکل کار با متغیر ها call by reference گفته می شود.
<?php function addnum(&$x){ $x++; echo $x; } $num = 10; addnum($num); echo '<br>'; echo $num;
اینجا مقدار 10 به متغیر داده شده و به تابع پاس داده می شود. بعد تابع یک عدد اضافه می کند و نمایش می دهد. الان می بینیم که مقدار خود متغیر هم تغییرکرده است.