php

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

<?php
function cube($num1)
{ //num1 parameter passed by value here
    return $num1 * $num1 * $num1; //cube of num1 returned
    
}

$answer = cube(3); //function cube called with 3 passed as the argument
echo $answer;
?>

توضیح

در مثال بالا، ما از روش ارسال توسط مقدار برای ارسال پارامتر num1 به تابع cube استفاده کرده ایم. این تابع مکعب این مقدار را بر می گرداند.

جا به جا (Swap) کردن اعداد

حال بیایید به مثال پیچیده تر زیر نگاهی بیاندازیم که در آن روش ارسال توسط مقدار کار نمی کند.
<?php
function swap($arg1, $arg2)
{ //parameters num1 and num2 passed using pass by value 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;

// Have a careful look at this function call
swap($num1, $num2);
echo "num1 is: $num1\n";
echo "num2 is: $num2";
?>

توضیح

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

به احتمال زیاد، فکر می کردیم که این تابع کار می کند، num1 مقدار ۵ را گرفته و مقدار num2 نیز ۴ خواهد بود. هر چند، مشخصا این اتفاق نیافتاده است و خروجی دقیقا معکوس این حالت است. در چنین مواقعی باید از روش ارسال توسط مرجع استفاده کنیم. در بخش بعدی با جزئیات به این روش می پردازیم.در این بخش به معرفی ارسال پارامتر توسط مقدار که یکی روش های ارسال پارامتر به توابع است می پردازیم. سرفصل مباحث این جلسه به شرح زیر می باشد:
  • ارسال آرگومان توسط مقدار
  • مثال: مکعب یک عدد
    • توضیح
  • مثال: جا به جا(Swap) کردن اعداد
    • توضیح
PHP به ما اجازه می دهد که آرگومان ها را با استفاده از دو روش به توابع منتقل کنیم:
  • ارسال توسط مقدار
  • ارسال توسط مرجع
بیایید نگاهی به روش ارسال توسط مقدار بیاندازیم.

ارسال آرگومان توسط مقدار

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

مثال: مکعب عدد

مثال زیر را در نظر بگیرید که یک عدد دریافت کرده و مکعب آن را چاپ می کند.
<?php
function cube($num1)
{ //num1 parameter passed by value here
    return $num1 * $num1 * $num1; //cube of num1 returned
    
}

$answer = cube(3); //function cube called with 3 passed as the argument
echo $answer;
?>

توضیح

در مثال بالا، ما از روش ارسال توسط مقدار برای ارسال پارامتر num1 به تابع cube استفاده کرده ایم. این تابع مکعب این مقدار را بر می گرداند.

جا به جا (Swap) کردن اعداد

حال بیایید به مثال پیچیده تر زیر نگاهی بیاندازیم که در آن روش ارسال توسط مقدار کار نمی کند.
<?php
function swap($arg1, $arg2)
{ //parameters num1 and num2 passed using pass by value 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;

// Have a careful look at this function call
swap($num1, $num2);
echo "num1 is: $num1\n";
echo "num2 is: $num2";
?>

توضیح

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

به احتمال زیاد، فکر می کردیم که این تابع کار می کند، num1 مقدار ۵ را گرفته و مقدار num2 نیز ۴ خواهد بود. هر چند، مشخصا این اتفاق نیافتاده است و خروجی دقیقا معکوس این حالت است. در چنین مواقعی باید از روش ارسال توسط مرجع استفاده کنیم. در بخش بعدی با جزئیات به این روش می پردازیم.

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

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

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

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