将数组转换为独立的函数参数 - howto?

时间:2009-09-23 17:02:48

标签: php arrays function

我想在函数调用中使用数组中的值作为独立参数。例如:

// Values "a" and "b"
$arr = array("alpha", "beta");
// ... are to be inserted as $a and $b.
my_func($a, $b)
function my_func($a,$b=NULL) { echo "{$a} - {$b}"; }

数组中的值数未知。

可能的解决方案:

  1. 我可以将数组作为单个参数传递 - 但更喜欢传递多个独立的函数参数。

  2. implode()将数组转换为逗号分隔的字符串。 (失败,因为它只是一个字符串。)

  3. 使用单个参数:

    $str = "'a','b'";
    function goat($str);  // $str needs to be parsed as two independent values/variables.
    
  4. 使用eval()

  5. 遍历阵列?

  6. 建议表示赞赏。感谢。

4 个答案:

答案 0 :(得分:23)

如果我理解正确的话:

$arr = array("alpha", "beta");
call_user_func_array('my_func', $arr);

答案 1 :(得分:20)

这个问题相当陈旧,但最终在PHP 5.6 +中有更直接的支持:

http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list.new

$arr = array("alpha", "beta");
my_func(...$arr);

答案 2 :(得分:1)

尝试列表()

// Values "a" and "b"
$arr = array("alpha", "beta");
list($a, $b) = $arr;
my_func($a, $b);

function my_func($a,$b=NULL) { echo "{$a} - {$b}"; }

答案 3 :(得分:0)

您可以使用call_user_func_array()执行此操作。它可以创造奇迹(甚至可以使用PHP 5.3以来的lambda函数)。