Функция Array_map в php с параметром

у меня есть это

$ids = array_map(array($this, 'myarraymap'), $data['student_teacher']); function myarraymap($item) { return $item['user_id']; } 

Я хотел бы добавить другой параметр в свою функцию, чтобы получить что-то вроде

 function myarraymap($item,$item2) { return $item['$item2']; } 

Может кто-то может мне помочь? Я пробовал много вещей, но ничего не работало

Solutions Collecting From Web of "Функция Array_map в php с параметром"

Помимо создания объекта mapper, вы не можете многое сделать. Например:

 class customMapper { private $customMap = NULL; public function __construct($customMap){ $this->customMap = $customMap; } public function map($data){ return $data[$this->customMap]; } } 

А затем внутри вашей функции вместо создания собственного картографа используйте новый класс:

 $ids = array_map(array(new customMapper('param2'), 'map'), $data['student_teacher']); 

Это позволит вам создать настраиваемый сопоставитель, который может возвращать любую информацию … И вы можете скомпилировать свой customMapper, чтобы легко принимать больше полей или конфигурации.

Массив массива PHP поддерживает третий параметр, который представляет собой массив, представляющий параметры для перехода к функции обратного вызова. Например, обрезка / char из всех элементов массива может быть выполнена следующим образом:

 $to_trim = array('/some/','/link'); $trimmed = array_map('trim',$to_trim,array_fill(0,count($to_trim),'/')); 

Гораздо проще, чем использовать пользовательские функции или другие функции, такие как array_walk и т. Д.

* NB Как указано в комментариях ниже, я немного поспешил, и третий параметр действительно должен быть такой же длины, как и второй, который выполняется с помощью array_fill() .

Вышеуказанные результаты:

 array(2) { [0]=> string(4) "some" [1]=> string(4) "link" } 

Вы можете использовать анонимную функцию и передать значение локальной переменной в свой второй аргумент myarraymap следующим образом:

 function myarraymap($item,$item2) { return $item[$item2]; } $param = 'some_value'; $ids = array_map( function($item) use ($param) { return myarraymap($item, $param); }, $data['student_teacher'] ); 

Обычно этого достаточно, чтобы просто передать значение внутри тела анонимной функции:

 function($item) { return myarraymap($item, 'some_value'); } 

Рассмотрим использование array_walk . Он позволяет передавать user_data .