是否可以轻松地将数组的各个项目作为参数传递给方法?
这样:
编辑2:
我更改了我的代码以显示"解决方案",该解决方案的问题在于它自 PHP 4.1 起被弃用并在 PHP 7 中删除。
<?php
$builder = new Builder;
$params = array('This is number: ', 4);
echo call_user_method_array('add', $builder, $params);
class Builder {
public function add($string1, $number1) {
return $string1 . $number1;
}
}
?>
编辑:
我用一个简单的例子犯了一个错误。我想知道这是否可能的原因不是返回类似字符串的函数。它是创建一个类似MVC的框架。解决方案必须是全面的。
如果你想坚持你的通用解决方案,只需使用正确的非弃用方法:
echo call_user_func_array([$builder, 'add'], $params);
参考: callable
演示:https://3v4l.org/4VFi6
使用implode()
方法。
<?php
$builder = new Builder;
$params = array('This is number: ', 4);
echo $builder->add($params); //returns 'This is number: 4'
class Builder {
public function add($params) {
return implode('', $params);
}
}
?>
输出
This is number: 4
查看在线演示 : 点击这里
或
传递 2 个参数$params[0],$params[1]
.
<?php
$builder = new Builder;
$params = array('This is number: ', 4);
echo $builder->add($params[0],$params[1]); //returns 'This is number: 4'
class Builder {
public function add($string1 ,$number1) {
return $string1 . $number1;
}
}
?>
在线演示 : 点击这里
这是一个更通用的方法:
只需将数组传递给函数并使用foreach-loop
循环访问它
<?php
$builder = new Builder;
$params = array('This is number: ', 4);
$builder->add($params); //returns 'This is number: 4'
class Builder {
public function add($array) {
foreach($array as $key => $value){
//Do something with your values here if you want
return $key . $value;
}
}
}
?>