20/10/09

Macro operaciones con las funciones array_*

Quitar todos los espacios de principio y de final de cada elemento en un array (array_map):

$array_trimmed = array_map('trim', $array);
Alternativas:
$array_trimmed = array(); foreach ($array as $v) $array_trimmed[] = trim($v);
foreach ($array_trimmed as &$v) $v = trim($v); // Mala idea. PHP tiene leaks desde hace mucho tiempo con foreach + &.

Obtener una lista segura de enteros (por ejemplo IDs) para insertar en una query dentro de un IN().
$array_str_list = implode(',', array_map('intval', $array));

Filtrar un array obteniendo únicamente valores numéricos (array_filter):
$array_numbers = array_filter($array, 'is_numeric')

Para creación de valores para un insert con pdo (array_map):

$query_insert_values = implode(",", array_map(array($pdo, 'quote'), $values))

Para creación de asignaciones en un update con pdo (array_map con dos arrays):
$query_set = implode(',', array_map(function($k, $v) use ($pdo) {
return '`' . implode('`,`', explode('.', $k)) . '`=' . $pdo->quote($v);
}, array_keys($array), array_values($array)));

Obtener una lista de elementos únicos usando un array que contiene un número indeterminado de arrays (array_reduce):

$array_unique = array_unique( array_reduce( $arrays, 'array_merge', array() ) );