اطلاعات به تابع از طریق آرگومانها ارسال خواهد شد که توسط لیستی جدا شده کاما نشان داده میشود.
PHP از آرگومانهای مقدار (پیشفرض) ارسال با مرجع و مقدارهای آرگومان پیشفرض پشتیبانی مینماید. فهرست متغیر آرگومانها نیز پشتیبانی شدهاند مرجع توابع برای func_num_args() func_get_arg() و func_get_args() برای اطلاعات بیشتر ببینید.
Example #1 Passing arrays to functions
<?php
function takes_array($input)
{
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
?>
بطور پیشفرض آرگومانهای تابع بصورت مقدار (بدین ترتیب تغییر مقدار آرگومان در تابع تاثیری بر متغیر در برنامه ندارد). برای این که یک تابع آرگومانهای خود را تغییر دهد باید آنها را بصورت مرجع به آن ارسال نماییم.
برای ارسال یک آرگومان بصورت مرجع به تابع یک علامت (&) به نام آرگومان در تعریف تابع اضافه نمایید:
Example #2 ارسال پارامترهای تابع با استفاده از مرجع
<?php
function add_some_extra(&$string)
{
$string .= 'and something extra.';
}
$str = 'This is a string, ';
add_some_extra($str);
echo $str; // outputs 'This is a string, and something extra.'
?>
یک تابع ممکن است مقادیر پیشفرض همانند C++ برای آرگومانهای خطی خود تعریف مینماید همانطور که در پایین نشان داده شده است:
Example #3 استفاده از پارامتر پیشفرض
<?php
function makecoffee($type = "cappuccino")
{
return "Making a cup of $type.\n";
}
echo makecoffee();
echo makecoffee(null);
echo makecoffee("espresso");
?>
The above example will output:
Making a cup of cappuccino. Making a cup of . Making a cup of espresso.
PHP همچنین استفاده از array و نوع ویژه NULL را به عنوان مقدار پیشفرض خود فراهم نموده است به عنوان نمونه:
Example #4 استفاده از انواع غیرخطی به عنوان مقدار پیشفرض پارامتر
<?php
function makecoffee($types = array("cappuccino"), $coffeeMaker = NULL)
{
$device = is_null($coffeeMaker) ? "hands" : $coffeeMaker;
return "Making a cup of ".join(", ", $types)." with $device.\n";
}
echo makecoffee();
echo makecoffee(array("cappuccino", "lavazza"), "teapot");
?>
مقدار پیشفرض باید یک عبارت ثابت باشد و نه یک متغیر یک عضو کلاس یا فراخوانی تابع (برای نمونه).
توجه نمایید که هنگام استفاده از آرگومان پیشفرض هر پیشفرض در سمت راست هر آرگومان غیرپیشفرض باشد. کد پایین را در نظر بگیرید:
Example #5 استفاده نادرست از آرگومان پیشفرض تابع
<?php
function makeyogurt($type = "acidophilus", $flavour)
{
return "Making a bowl of $type $flavour.\n";
}
echo makeyogurt("raspberry"); // won't work as expected
?>
The above example will output:
Warning: Missing argument 2 in call to makeyogurt() in /usr/local/etc/httpd/htdocs/phptest/functest.html on line 41 Making a bowl of raspberry .
حال مثال بالا را با مثال زیر مقایسه کنید:
Example #6 استفاده درست از آرگومانهای پیشفرض
<?php
function makeyogurt($flavour, $type = "acidophilus")
{
return "Making a bowl of $type $flavour.\n";
}
echo makeyogurt("raspberry"); // works as expected
?>
The above example will output:
Making a bowl of acidophilus raspberry.
Note: همچنان در PHP 5 مقدار پیشفرض از طریق مرجع ارسال میگردد:
PHP 4 و بالاتر از فهرستهای آرگومان با طول متغیر پشتیبانی مینماید. این کار بسیار است و از توابع func_num_args() func_get_arg() و func_get_args() استفاده میکند.
دستور ویژهای مورد نیاز نیست و فهرست آرگومان توسط تعریف تابع دقیقا فراهم میگردد و بصورت معمول رفتار مینماید.