我想知道如何将更多参数传递给我的array_walk ..
$addresses = array('www.google.com', 'www.yahoo.com', 'www.microsoft.com');
$a = 'hey';
$b = 'hey';
array_walk($addresses, array($this, '_handle'), $a, $b); // $a and $b parameters doesn't get passed
private function _handle($address,$a, $b) {
echo $address; // www.google.com
echo $a // 012
echo $b // 012
}
我如何传递参数?我必须传递超过5个参数..请教我..谢谢!
答案 0 :(得分:17)
第三个参数是混合数据类型。如果您有许多参数,我建议将它们放入一个数组 - 也许是一个关联数组来命名它们。然后你将它们从那个参数中拉回来:
$addresses = array('www.google.com', 'www.yahoo.com', 'www.microsoft.com');
$params = array('first','second');
array_walk($addresses, array($this, '_handle'), $params);
private function _handle($address,$count, $params) {
echo $address; // www.google.com
echo $params[0]; // first
echo $params[1]; // second
}
答案 1 :(得分:5)
传递给array_walk()
的函数需要2-3个参数。
将多个变量传递给array_walk
传递数组。
array_walk($addresses, array($this, '_handle'), array('a'=>$a, 'b'=>$b));
private function _handle($address, $k, $data){
echo $address;
echo $data['a'];
echo $data['b'];
}
答案 2 :(得分:4)
它只允许一个参数用于用户数据。我建议将你的值作为数组传递。
array_walk($addresses, array($this, '_handle'), array($a, $b));
答案 3 :(得分:0)
您必须在类似这样的函数上使用'use'
关键字:
array_walk($array,function(&$value,$key)**use**([param to pass like $a]){ // code});