我有一个函数,希望将9个参数传递给它。它期望的第一个参数是一个字符串,其余的是整数。
这是功能:
getProductPrice('red', 8, 1.6, 2.15, 0, 0, 0, 17.6, 0);
当它运行时,它运行正常。但是,当我像这样运行它时:
getProductPrice("'red'".','.$arguments);
它不起作用。
"'red'".','.$arguments
输出:'红色',8,1.6,2.15,0,0,0,17.6,0
如果有人能告诉我如何使用$ arguments变量代替所有参数?
我最终怀疑是让它不起作用,$ arguments输出的是一个字符串,所以我研究了如何将逗号分隔的数字串转换为php函数的参数。
我遇到了这个:
$params = explode(',', $str);
call_user_func_array("func", $params);
我无法弄清楚如何使用此解决方案有两个原因:
我需要传递一个字符串和数字
2.简单地将我的函数名称放在那个示例中的“func”将不起作用,因为它是一个cakephp函数,它要求我放置$ this-> ModelName-> functionname,它打破了第一个参数call_user_func_array function()
任何想法如何帮助我们?
我可以把变量使得$ arguments输出它的功能,但是获取每个数字都需要很多复杂的逻辑和数学,所以我的函数调用看起来很荒谬。
再次感谢。
答案 0 :(得分:1)
您应该尝试将"func"
字符串替换为array($this->ModelName, 'functionname')
。此数组中的第一个元素是您调用方法的对象,第二个元素是此方法名称的字符串表示形式。这样它应该有效:
$params = explode(',', $str);
call_user_func_array(array($this->ModelName, 'functionname'), $params);
当然用您自己的名称替换占位符名称。