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