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中它被称为不同的名称?
在 php5.6
中添加了通过...
(展开运算符)参数展开。使用它,您可以使用这种更简单的替代方法来摆脱call_user_func_array()
。例如,有一个函数:
function add($a, $b){
return $a + $b;
}
使用数组 $list = [4, 6];
(PHP5.5之后您可以这样声明数组)。
您可以使用 ...
调用您的函数:
echo add(...$list);
unpacking
。在php中,这种方式类似于python:list($min, $max) = [3, 6];
range($min, $max);
PHP参数解包
($min, $max)
或{$min, $max}
。但是list
才是我要找的。 - ferdynator你应该使用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
call_user_func_array()
、func_get_args()
等,转而使用可变参数运算符“...”。现在...如果有人能告诉我如何在Python中实现这个功能,我将不胜感激:$m = 'getName'; $name = $obj->$m(); - dougB