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

Kev*_*Lee 8 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
}
Run Code Online (Sandbox Code Playgroud)

我如何传递参数?我必须传递超过5个参数..请教我..谢谢!

Dan*_*ple 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
}
Run Code Online (Sandbox Code Playgroud)

  • @Kevin:userdata*可以*是一个数组,它可以是你想要的任何东西.它可以是int,字符串,对象,数组等.使用数组,因此您可以拥有多个值. (2认同)

Joh*_*tta 5

它只允许用户数据的一个参数。我建议将您的值作为数组传递。

array_walk($addresses, array($this, '_handle'), array($a, $b));
Run Code Online (Sandbox Code Playgroud)


Roc*_*mat 5

传递的函数array_walk()需要2-3个参数.

  1. 数组值(如果需要,作为参考)
  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'];
}
Run Code Online (Sandbox Code Playgroud)