gpt4 book ai didi

php - 如何传递期望可变参数字符串的 PHP 函数?

转载 作者:可可西里 更新时间:2023-11-01 00:22:35 26 4
gpt4 key购买 nike

我有一个 PHP 函数,它接受可变数量的参数。

function foo() {
$numargs = func_num_args();
if ($numargs < 3) {
die("expected number of args is 3, not " . $numargs);
}
...

如果我这样调用它:

   foo(1, 12, 17, 3, 5); 

没关系,但如果我这样调用它:

   $str = "1, 12, 17, 3, 5"; 
foo($str);

它失败了,因为它说我只传递了一个参数。如果我不想更改函数本身,而只想更改调用约定,我需要进行哪些更改。

-- 更新:为了保存爆炸调用,我简单地构建了一个数组。而且因为该函数是一个成员函数,所以调用约定有点不同。所以代码最终是

$list = array(); 
$list[] = 1;
$list[] = 12;
$list[] = 17;
// etc.
call_user_func_array(array($this, 'foo'), $list);

认为这可能对其他人有用。

最佳答案

这应该可以解决问题:

$str = "1, 12, 17, 3, 5"; 
$params = explode(', ', $str );
call_user_func_array ( 'foo', $params );

call_user_func_array() 允许您调用函数并将存储在数组中的参数传递给它。因此,索引 0 处的数组项成为函数的第一个参数,依此类推。

http://www.php.net/manual/en/function.call-user-func-array.php

更新:如果您希望参数是整数(如果您使用上面的代码片段,它们将作为字符串传递),您将必须对 $params 数组进行一些额外的处理。

关于php - 如何传递期望可变参数字符串的 PHP 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15363571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com