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

Published at Tue, 20 Oct 2009 00:00:00 UTC by soywiz

Remove all the spaces from the start and the end of each element from an array (`array_map`): ```php $array_trimmed = array_map('trim', $array); ``` Alternatives: ```php // 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()`: ```php $array_str_list = implode(',', array_map('intval', $array)); ``` Filter an array obtaining solely numeric values (`array_filter`): ```php $array_numbers = array_filter($array, 'is_numeric'); ``` To create values to insert using PDO (`array_map`): ```php $query_insert_values = implode(",", array_map(array($pdo, 'quote'), $values)); ``` To create assignments in an update using PDO (`array_map` using two arrays): ```php $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`): ```php $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**): ```php $array_trimmed = array_map('trim', $array); ``` Alternativas: ```php // 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(). ```php $array_str_list = implode(',', array_map('intval', $array)); ``` Filtrar un array obteniendo únicamente valores numéricos (**array_filter**): ```php $array_numbers = array_filter($array, 'is_numeric'); ``` Para creación de valores para un insert con pdo (**array_map**): ```php $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): ```php $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**): ```php $array_unique = array_unique(array_reduce($arrays, 'array_merge', array())); ```