как передать больше аргументов в PHP array walk?



Я хочу знать, как передать больше аргументов в мой 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 параметров.. пожалуйста, научи меня.. Спасибо!

562   3  
PHP

3 ответов:

Третий параметр-это смешанный тип данных. Если у вас много параметров, я бы предложил поместить их в массив - возможно, ассоциативный массив, чтобы назвать их. Затем вы вытащите их обратно из этого парама:

$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
}

Функция, переданная в 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'];
}

Он допускает только один аргумент для пользовательских данных. Я предлагаю передать ваши значения в виде массива.

array_walk($addresses, array($this, '_handle'), array($a, $b));

Comments

    Ничего не найдено.