Tóm tắt: PHP Function Parameters, trong bài hướng dẫn này, bạn sẽ học về tham số hàm và truyền đối số bằng giá trị và tham chiếu.
Giới thiệu về tham số hàm Function Parameters PHP
Một hàm có thể có không hoặc nhiều tham số:
<?php function function_name(parameter_list) { }
Khi một hàm có nhiều tham số, bạn cần phải tách chúng bằng dấu phẩy (,
).
Ví dụ sau định nghĩa hàm concat()
để nối hai chuỗi thành một chuỗi:
<?php function concat($str1, $str2) { return $str1 . $str2; }
Hàm concat()
có hai tham số $str1
và $str2
.
Khi bạn gọi hàm concat()
, bạn cần truyền hai đối số tương ứng với các tham số. Ví dụ:
<?php function concat($str1, $str2) { return $str1 . $str2; } $greeting = concat('Chào mừng ', 'Admin'); echo $greeting;
Trong ví dụ này, $str1
sẽ lấy đối số đầu tiên 'Chào mừng '
, và $str2
sẽ lấy đối số thứ hai 'Admin'
.
PHP sẽ báo lỗi nếu số lượng đối số bạn truyền vào hàm ít hơn số lượng tham số. Ví dụ:
<?php function concat($str1, $str2) { return $str1 . $str2; } $greeting = concat('Chào mừng'); echo $greeting;
Khi bạn truyền nhiều đối số cho một hàm, bạn có thể phân chia danh sách các đối số dọc để làm mã code dễ đọc hơn như sau:
<?php function concat($str1, $str2) { return $str1 . $str2; } $greeting = concat( 'Chào mừng ', 'Nhà' ); echo $greeting;
Là một thành thạo việc liệt kê các đối số dọc khi danh sách đối số dài.
Dấu phẩy cuối (,)
Từ PHP 7.0, danh sách đối số có thể chứa dấu phẩy cuối cùng (,
) mà trình thông dịch PHP sẽ bỏ qua. Ví dụ:
$greeting = concat( 'Chào mừng ', 'Nhà', );
Trong PHP 8.0, bạn có thể đặt dấu phẩy cuối cùng (,) trong danh sách tham số như sau:
function concat( $str1, $str2, ) { return $str1 . $str2; }
Truyền đối số theo giá trị
Xem xét ví dụ sau:
<?php $counter = 1; function increase($value) { $value+= 1; echo $value. <br>; // 2 } // tăng giá trị counter increase($counter); echo $counter . <br>; // 1
Kết quả:
2 1
Cách hoạt động.
- Trước hết, định nghĩa biến
$counter
và khởi tạo giá trị là một. - Tiếp theo, định nghĩa hàm
tăng()
mà tăng đối số lên một và hiển thị nó. - Sau đó, gọi hàm
tăng()
và truyền biến$counter
vào hàm. - Cuối cùng, hiển thị biến
$counter
.
Khi bạn truyền biến $counter
vào hàm tăng()
, hàm sẽ tăng giá trị lên một. Do đó, khi bạn hiển thị giá trị của biến $counter
bên trong hàm, bạn sẽ nhận được số hai.
Tuy nhiên, sau khi gọi hàm, giá trị của counter vẫn là một. Điều đó có nghĩa là hàm tăng()
không tăng biến $counter
bên ngoài hàm.
Điều xảy ra là khi bạn truyền biến $counter
vào hàm tăng()
, hàm sao chép biến $counter
và sửa đổi bản sao. Nó không thay đổi biến ban đầu. Biến $counter
không thay đổi.
Khi giá trị của một đối số trong hàm được thay đổi và không thay đổi bên ngoài hàm, nó được truyền bằng giá trị.
Mặc định, các đối số được truyền theo giá trị trong PHP. Nếu bạn muốn một hàm thay đổi đối số của mình, bạn cần truyền các đối số theo tham chiếu.
Truyền đối số theo tham chiếu
Để truyền một đối số theo tham chiếu, bạn thêm toán tử (&
) vào tên tham số trong định nghĩa hàm như sau:
<?php $counter = 1; function increase( &$value ) { $value += 1; echo $value . <br>; // 2 } // tăng giá trị counter increase($counter); echo $counter . <br>; // 2
Kết quả:
2 2
Trong ví dụ này, sự thay đổi của biến $counter
phản ánh cả bên trong và bên ngoài hàm.
Tóm tắt
- Tách các tham số Function Parameters bằng dấu phẩy (
,
). Từ PHP 8.0, danh sách tham số có thể có dấu phẩy cuối cùng (,
) mà trình thông dịch PHP bỏ qua. - Mặc định, các đối số được truyền theo giá trị trong PHP.
- Thêm dấu thằng (&) vào các tham số để truyền đối số theo tham chiếu.