Thông tin có thể được chuyển tới các hàm thông qua danh sách đối số, đó là một danh sách được phân cách bởi dấu phẩy của các biến và/hoặc các hằng số.
PHP hỗ trợ truyền các đối số bởi giá trị ( măc định), truyền qua tham chiếu, và các giá trị đối số mặc định. Một kết quả thông thường có thể đạt được trong PHP 3 bằng cách thông qua một mảng các đối số tới một hàm:
function takes_array($input) {
echo "$input[0] + $input[1] = ", $input[0]+$input[1]; }
2.1_Tạo các đối số bằng cách truyền bằng tham chiếu
Bởi mặc định, các đối số của hàm được truyền bằng tham trị ( bởi vậy nếu ta thay đổi giá trị của đối số trong một hàm, nó sẽ không thay đổi giá trị của nó bên ngoài hàm). Nếu ta muốn cho phép một hàm thay đổi các đối số của nó, ta phải truyền nó bằng tham chiếu.
Nếu ta muốn một đối số đến một hàm để luôn luôn được truyền bằng tham chiếu, ta có thể thêm một dấu và ( &) phía trước tên của đối số trong định nghĩa hàm:
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.'
Nếu ta muốn truyền một biến bằng tham chiếu tới một hàm mà không thực hiện điều này bằng mặc định, ta có thể điền một dấu và (&) phía trước tên của đối số trong lời gọi hàm:
function foo ($bar) {
$bar .= ' and something extra.'; }
$str = 'This is a string, '; foo ($str);
echo $str; // outputs 'This is a string, ' foo (&$str);
echo $str; // outputs 'This is a string, and something extra.'
2.2_Các giá trị đối số mặc định
Một hàm có thể định nghĩa các giá trị mặc định theo kiểu của C++ cho các đối số vô hướng như sau:
function makecoffee ($type = "cappucino") { return "Making a cup of $type.\n"; }
echo makecoffee ();
echo makecoffee ("espresso");
Đầu ra cho đoạn mã trên là:
Making a cup of cappucino. Making a cup of espresso.
Chú ý rằng khi sử dụng các đối số mặc định, bất kỳ mặc định nào sẽ được đặt về phía bên phải của các đối số không mặc định; theo cách khác, những thứ sẽ không làm việc như mong chờ. Hãy xem xét đoạn mã nhỏ sau:
function makeyogurt ($type = "acidophilus", $flavour) { return "Making a bowl of $type $flavour.\n";
}
echo makeyogurt ("raspberry"); // won't work as expected
Đầu ra cho ví dụ trên là:
Warning: Missing argument 2 in call to makeyogurt() in /usr/local/etc/httpd/htdocs/php3test/functest.html on line 41 Making a bowl of raspberry .
Bây giờ hãy so sánh với đoạn này:
function makeyogurt ($flavour, $type = "acidophilus") { return "Making a bowl of $type $flavour.\n";
}
echo makeyogurt ("raspberry"); // works as expected
Đầu ra cho ví dụ này là:
Making a bowl of acidophilus raspberry.
2.3_Các danh sách đối số chiều dài biến
PHP4 cung cấp các danh sách đối số chiều dài biến trong các hàm được định nghĩa bởi người sử dụng . Điều này thực sự khá dễ dàng, dùng các hàm func_num_args(),
func_get_arg() và hàm func_get_args().
Không yêu cầu cú pháp đặc biệt nào, và các danh sách đối số sẽ vẫn còn được cung cấp một cách rõ ràng với các định nghĩa hàm và sẽ trở nên thông thường.