Xin chào, tôi đã làm việc với một hàm PHP lấy nhiều đối số và định dạng chúng. Hiện nay, tôi đang làm việc với một cái gì đó như thế này:PHP nhận tất cả đối số dưới dạng mảng?
function foo($a1 = null, $a2 = null, $a3 = null, $a4 = null){
if ($a1 !== null) doSomethingWith($a1, 1);
if ($a2 !== null) doSomethingWith($a2, 2);
if ($a3 !== null) doSomethingWith($a3, 3);
if ($a4 !== null) doSomethingWith($a4, 4);
}
Nhưng tôi đã tự hỏi nếu tôi có thể sử dụng một giải pháp như thế này:
function foo(params $args){
for ($i = 0; $i < count($args); $i++)
doSomethingWith($args[$i], $i + 1);
}
Nhưng vẫn gọi hàm theo cùng một cách, tương tự như từ khóa params trong C# hoặc mảng đối số trong JavaScript.
Một Gotcha với func_get_args đó là giá trị chỉ ra; bạn không thể chuyển nó vào một cuộc gọi hàm khác. – Rob
@Rob Bạn có thể nếu bạn đi '$ args = func_get_args()' và sau đó 'call_user_func_array ($ func, $ args)' – alex
func_get_args() chỉ trả về giá trị của các tham số đã được PASSED cho cuộc gọi hàm, không phải tất cả các tham số được xác định trong định nghĩa hàm. –