如何将更多参数传递给php array_walk?

时间:2011-03-23 20:19:56

标签: php

我想知道如何将更多参数传递给我的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个参数..请教我..谢谢!

4 个答案:

答案 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个参数。

  1. 数组值(如果需要,作为参考)
  2. 数组密钥
  3. 自定义数据(可选)
  4. 将多个变量传递给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});