2008-11-16 27 views
23

Python cung cấp "*" nhà điều hành cho giải nén một danh sách các hàng và đem lại cho họ một chức năng như các đối số, như vậy:giải nén một mảng các đối số trong php

args = [3, 6] 
range(*args)   # call with arguments unpacked from a list 

này tương đương với:

range(3, 6) 

Có ai biết nếu có cách nào để đạt được điều này trong PHP không? Một số googling cho các biến thể của "PHP Unpack" đã không ngay lập tức bật lên bất cứ điều gì .. có lẽ nó được gọi là một cái gì đó khác nhau trong PHP?

Trả lời

22

Bạn có thể sử dụng call_user_func_array() để đạt được điều đó:

call_user_func_array("range", $args); sử dụng ví dụ của bạn.

13

Trong php5.6 các ... operator đã được thêm vào. Sử dụng nó, bạn có thể loại bỏ call_user_func_array() để thay thế đơn giản hơn này. Ví dụ: có chức năng

function add($a, $b){ 
    return $a + $b; 
} 

và mảng của bạn $list = [4, 6]; (sau php5.5 bạn có thể khai báo mảng theo cách này). Bạn có thể gọi chức năng của bạn với ...:

echo add(...$list);

+0

Không hoạt động nếu mảng của bạn có khóa Chuỗi;) – BusyAnt

0

Trong tình huống nhất định, bạn có thể xem xét sử dụng unpacking, mà có thể trong php, là một cách tương tự như python:

list($min, $max) = [3, 6]; 
range($min, $max); 

Đây là làm thế nào tôi đã đến câu trả lời này ít nhất. Tìm kiếm của Google: PHP argument unpacking

Các vấn đề liên quan