Python 提供了 "*" 运算符来解包元组列表并将它们作为参数提供给函数,如下所示:
args = [3, 6]
range(*args) # call with arguments unpacked from a list
这相当于:
range(3, 6)
有谁知道是否有办法在 PHP 中实现这一点?一些“PHP Unpack”变体的谷歌搜索并没有立即出现任何东西......也许它在PHP中被称为不同的东西?
Python 提供了 "*" 运算符来解包元组列表并将它们作为参数提供给函数,如下所示:
args = [3, 6]
range(*args) # call with arguments unpacked from a list
这相当于:
range(3, 6)
有谁知道是否有办法在 PHP 中实现这一点?一些“PHP Unpack”变体的谷歌搜索并没有立即出现任何东西......也许它在PHP中被称为不同的东西?
在参数中添加了通过(splat 运算符)php5.6
解包...
。使用它,您可以摆脱call_user_func_array()
这种更简单的替代方案。例如有一个功能:
function add($a, $b){
return $a + $b;
}
使用你的数组$list = [4, 6];
(在 php5.5 之后你可以用这种方式声明数组)。
您可以使用以下命令调用您的函数...
:
echo add(...$list);
您可以使用它call_user_func_array()
来实现:
call_user_func_array("range", $args);
用你的例子。
在某些情况下,您可能会考虑使用unpacking
php 中的 php 类似于 python 的方式:
list($min, $max) = [3, 6];
range($min, $max);
至少我是这样得出这个答案的。谷歌搜索:PHP argument unpacking
你应该使用 call_user_func_array
call_user_func_array(array(CLASS, METHOD), array(arg1, arg2, ....))
http://www.php.net/call_user_func_array
或使用反射 api http://www.php.net/oop5.reflection
<?php
function add(int ...$arr) { // typehint ready
return array_sum($arr);
}
var_dump(add(1, 2, 3, ...[1, 2, 3])); // int(12)
... - 运算符的另一个示例。
RFC:https ://wiki.php.net/rfc/variadics