call by value

در php وقتی تابعی داریم و درون تابع یک متغیر تعریف می کنیم تنها  درون تابع این مقدار متغیر قابل دسترسی است.

مثلا در این مثال من یک تابع دارم که یک مقدار متغیر می گیرد.  یک عدد اضافه می کند و آن را چاپ می کند.

<?php

function addnum($x){
    
    $x++;
    echo $x;
}

$num = 10;
addnum($num);
echo '<br>';

echo $num;



من اول تابع را صدا زده ام که نتیجه عدد 11 را نمایش می دهد

بعد هم متغیری که به تابع پاس داده ام را چاپ کردم متغیر همان مقدار اولیه یعنی عدد 10 است و تغییری نکرده.

call by reference

این حالت 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 به متغیر داده شده و به تابع پاس داده می شود. بعد تابع یک عدد اضافه می کند و نمایش می دهد. الان می بینیم که مقدار خود متغیر هم تغییرکرده است.

call by reference