PHP: Macro operations with array_* functions (functional operations)

PHP: Macro operaciones con las funciones array_* (programación funcional)

Published at 20 Oct 2009 by soywiz

Remove all the spaces from the start and the end of each element from an array (array_map):

$array_trimmed = array_map('trim', $array);

Alternatives:

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

Get a ensured list of integers (IDs for example) in order to insert in a query inside an IN():

$array_str_list = implode(',', array_map('intval', $array));

Filter an array obtaining solely numeric values (array_filter):

$array_numbers = array_filter($array, 'is_numeric');

To create values to insert using PDO (array_map):

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

To create assignments in an update using PDO (array_map using two arrays):

$query_set = implode(',', array_map(function($k, $v) use ($pdo) {  
    return '`' . implode('`,`', explode('.', $k)) . '`=' . $pdo->quote($v);  
}, array_keys($array), array_values($array)));

Obtaining a list of unique elements using an array that contains an indeterminate number of arrays (array_reduce):

$array_unique = array_unique(array_reduce($arrays, 'array_merge', 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:

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

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()));