2

我有一个函数需要 9 个参数传递给它。它期望的第一个参数是一个字符串,其余的是整数。

这是功能:

 getProductPrice('red', 8, 1.6, 2.15, 0, 0, 0, 17.6, 0);

当它运行时,它工作正常。但是,当我这样运行它时:

 getProductPrice("'red'".','.$arguments);

这没用。

"'red'".','.$arguments

输出:'red', 8, 1.6, 2.15, 0, 0, 0, 17.6, 0

如果有人能告诉我如何使用 $arguments 变量代替所有参数?

我最终怀疑是让它不起作用,是 $arguments 输出的是一个字符串,所以我研究了如何将逗号分隔的数字字符串转换为 php 函数的参数。

我遇到了这个:

$params = explode(',', $str);
call_user_func_array("func", $params);

我不知道如何使用这个解决方案有两个原因:
1. 我需要传递一个字符串和数字。
2. 简单地把我的函数名放在那个例子中写着“func”的地方是行不通的,因为它是一个 cakephp 函数,它需要我把 $this->ModelName->functionname 放在里面,这会破坏 call_user_func_array 函数中的第一个参数()

有什么想法可以帮助我吗?

我可以只放置使 $arguments 输出其功能的变量,但是要获得每个数字需要大量复杂的逻辑和数学运算,因此我的函数调用看起来很荒谬。

再次感谢。

4

1 回答 1

2

您应该尝试将"func"字符串替换为array($this->ModelName, 'functionname'). 此数组中的第一个元素是您调用该方法的对象,第二个元素是此方法名称的字符串表示形式。这样它应该可以工作:

$params = explode(',', $str);
call_user_func_array(array($this->ModelName, 'functionname'), $params);

当然,用您自己的名称替换占位符名称。

于 2013-09-17T19:29:34.113 回答