我有一个函数参数数组。Php |如何将未知长度的参数数组单独传递给函数
数组中项目的数量不同。我希望能够将数组中的每个项目单独传递给函数(例如... func(arg1, arg2, arg3, arg4);
)。反对只是通过整个阵列。请记住,我不知道数组的长度,它根据我所调用的函数不同而不同。
我有一个函数参数数组。Php |如何将未知长度的参数数组单独传递给函数
数组中项目的数量不同。我希望能够将数组中的每个项目单独传递给函数(例如... func(arg1, arg2, arg3, arg4);
)。反对只是通过整个阵列。请记住,我不知道数组的长度,它根据我所调用的函数不同而不同。
因为PHP 5.6你有Variable-length argument lists这样你就可以打电话给你的功能是这样的:
$arr = array(1, 2, 5, "ten");
,你可以通过调用它像这样送在$arr
给函数的所有元素:
myFunc(...$arr);
在PHP中你有:
用于这一目的。
编辑
如果你细使用PHP 5.6,那么你有图示操作。从文档报价样本(link):
<?php
function add($a, $b, $c) {
return $a + $b + $c;
}
$operators = [2, 3];
echo add(1, ...$operators);
我认为他的问题是如何将变量大小的数组的元素发送到函数,以便该函数将这些元素看作单个参数。 –
也许你是对的。我编辑了答案。不幸的是,由于今天我的选票用完了,我无法赞成你的;(Perhpas你应该编辑你的名字,使它更具描述性和清晰性,然后我的可以被删除。 –
如果你的意思是你有一个函数,它的参数是一个数组,你可以使用foreach
获取所有的数组元素:
function my_func($arg_array)
{
foreach($arg_array as $key=>$value)
{
......
}
....
}
但是,如果你意味着你有一个函数可以使用参数数量未知的函数func_get_args
函数将包含参数的数组作为数组返回。
function my_func()
{
foreach(func_get_args() as $key=>$value)
{
......
}
....
}
用途:call_user_func_array("functionName", $arrayofArgs);
<?php
function unknown($arg1,$arg2,$arg3){
echo "arg1 = $arg1 <br>";
echo "arg1 = $arg2 <br>";
echo "arg1 = $arg3 <br>";
}
$array = [
"arg1" => "Hi",
"arg2" => "Marhaba",
"arg3" => "Hola",
"arg4" => "foo"
];
call_user_func_array("unknown", $array);
?>
,您可以通过将第一个参数为[ “类名”, “方法名”]
PHP文件的阵列中调用类的功能: http://php.net/manual/en/function.call-user-func-array.php
你的意思PHP的splat操作符? – Daan