with keys intval array_walk array_map array php arrays

keys - Función Array_map en PHP con parámetro



php array reduce (4)

Aparte de crear un objeto mapeador, no hay mucho que puedas hacer. Por ejemplo:

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

Y luego dentro de su función, en lugar de crear su propio mapeador, use la nueva clase:

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

Esto le permitirá crear un asignador personalizado que puede devolver cualquier tipo de información ... Y puede complejizar su CustomMapper para aceptar más campos o configuraciones fácilmente.

tengo esto

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

Me gustaría poner otro parámetro a mi función para obtener algo como

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

¿Alguien me puede ayudar? Probé muchas cosas pero nada funciona.


Considere el uso de array_walk . Te permite pasar user_data .


El array_map de PHP admite un tercer parámetro que es una matriz que representa los parámetros para pasar a la función de devolución de llamada. Por ejemplo, recortar el / char de todos los elementos de la matriz se puede hacer así:

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

Mucho más fácil que usar funciones personalizadas u otras funciones como array_walk , etc.

* NB Como se señaló en los comentarios a continuación, me array_fill() un poco y el tercer parámetro debe tener la misma longitud que el segundo, lo que se logra con array_fill() .

Los resultados anteriores:

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


Puede usar una función anónima y transmitir el valor de la variable local a su segundo argumento de myarraymap esta manera:

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

Normalmente puede ser suficiente pasar un valor dentro del cuerpo de la función anónima:

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