php

جلسه ۳۳: توابع قسمت ۴ در php

ارسال توسط مرجع

در این بخش به روش های مختلف برای ارسال پارامتر و آرگومان به تابع توسط مرجع می پردازیم. سرفصل مباحث این جلسه به شرح زیر می باشد:

  • ارسال توسط مرجع چیست؟
  • مثال: جا به جایی (Swap) اعداد
    • توضیح

ارسال توسط مرجع چیست؟

زمانی که از این روش استفاده می کنیم، مقدار اصلی ارسال می شود. بنابراین، مقدار اولیه نیز تغییر می کند. در این روش، مقادیر را با استفاده از علامت & ارسال می کنیم. علامت & اضافه شده بسیار مهم است و به کامپایلر می گوید که این داده در واقع ارجاعی از یک مقدار است نه صرفا یک مقدار.

مثال: جا به جایی (Swap) اعداد

حال بیایید تا تابع مبادله جلسه پیش را دوباره تعریف کنیم:

<?php
function swap(&$arg1, &$arg2)
{ //parameters num1 and num2 passed using pass by reference method
    $temp = $arg2; //creating a variable temp and setting equal to arg2
    $arg2 = $arg1; //setting the value of arg2 equal to arg1
    $arg1 = $temp; //setting the value of arg1 equal to temp which is equal to arg2
    
}

$num1 = 4;
$num2 = 5;

// Calling the function with arguments num1 and num2
swap($num1, $num2);
echo "num1 is: $num1\n";
echo "num2 is: $num2";
?>

توضیح

نحوه کار کد بالا را می توانید در تصویر زیر مشاهده کنید.

  • روش ارسال پارامتر به تابع swap نسبت به مثال قبلی متفاوت است.
  • در مثال قبلی، آرگومان ها به سادگی و به شکل num1 $ و num2 $ به تابع منتقل شده بودند ولی حالا به شکل num1 $& و num2 $& ارسال شده اند.
  • & اضافه بسیار مهم است و به کامپایلر نشان می دهد که این داده ارجاعی به یک مقدار است نه اینکه صرفا یک مقدار باشد.

با استفاده از این روش دیگر کپی ای از متغیر ها ایجاد نمی شود. به عنوان مثال، فرض کنید از شخصی درخواست کردید که یک سند چاپ شده را خوانده و علامت گذاری کند. شما می توانید یک کپی از سند (ارسال توسط مقدار) و یا اصل سند (ارسال توسط مرجع) را در اختیار آن شخص بگذارید. به همین صورت، شما می توانید به کامپایلر بگویید که یک کپی از متغیر و یا اصل متغیر را با توجه به اینکه کدام یک برای شما بهتر است، ارسال کند. در بخش بعدی در مورد دامنه متغیر ها در توابع صحبت خواهیم کرد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا