2017-04-03 50 views
-1

我有一个函数参数数组。Php |如何将未知长度的参数数组单独传递给函数

数组中项目的数量不同。我希望能够将数组中的每个项目单独传递给函数(例如... func(arg1, arg2, arg3, arg4);)。反对只是通过整个阵列。请记住,我不知道数组的长度,它根据我所调用的函数不同而不同。

+0

你的意思PHP的splat操作符? – Daan

回答

0

因为PHP 5.6你有Variable-length argument lists这样你就可以打电话给你的功能是这样的:

$arr = array(1, 2, 5, "ten"); 

,你可以通过调用它像这样送$arr给函数的所有元素:

myFunc(...$arr); 
0

在PHP中你有:

用于这一目的。

编辑

如果你细使用PHP 5.6,那么你有图示操作。从文档报价样本(link):

<?php 
function add($a, $b, $c) { 
    return $a + $b + $c; 
} 

$operators = [2, 3]; 
echo add(1, ...$operators); 
+0

我认为他的问题是如何将变量大小的数组的元素发送到函数,以便该函数将这些元素看作单个参数。 –

+0

也许你是对的。我编辑了答案。不幸的是,由于今天我的选票用完了,我无法赞成你的;(Perhpas你应该编辑你的名字,使它更具描述性和清晰性,然后我的可以被删除。 –

0

如果你的意思是你有一个函数,它的参数是一个数组,你可以使用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) 
    { 
    ...... 
    } 
    .... 
    } 
0

用途: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

相关问题