1. Code
  2. PHP

Cómo usar la función array_map en PHP con ejemplos

En este artículo rápido, analizaremos la función array_map en PHP. Básicamente revisaremos la sintaxis de la función array_map y demostraremos cómo usarla con ejemplos reales.
Scroll to top
4 min read

Spanish (Español) translation by Ana Paulina Figueroa (you can also view the original English article)

En este artículo rápido, analizaremos la función array_map en PHP. Básicamente revisaremos la sintaxis de la función array_map y demostraremos cómo usarla con ejemplos reales.

La función array_map te permite aplicar una función de devolución de llamada para transformar elementos de una matriz. Es verdaderamente útil cuando quieres realizar una operación específica en cada elemento de una matriz. Además de eso, también te permite combinar múltiples matrices en una sola matriz multidimensional.

En lugar de recorrer todos los elementos de la matriz con la construcción foreach para llevar a cabo una operación específica en ellos, deberías preferir la función array_map, que ha sido creada específicamente para hacer esto.

Sintaxis de la función array_map

En esta sección, analizaremos la sintaxis de la función array_map para comprender cómo funciona.

Echemos un vistazo a la sintaxis de la función array_map:

1
array_map ( callable|null $callback , array $array , array ...$arrays ) : array

El primer argumento es la función de devolución de llamada, que se invoca cuando la función array_map recorre los elementos de una matriz. Puede ser una función definida por el usuario o un método de clase en la forma invocable.

El segundo argumento es la matriz de origen en la que se ejecutará la función de devolución de llamada.

En la mayoría de los casos solamente necesitarías estos dos argumentos. Pero la función array_map te permite enviar argumentos de matriz adicionales, que son enviados como argumentos a la función de devolución de llamada. Todos ellos serán combinados en una matriz multidimensional en la salida. Es interesante saber que puedes enviar null como devolución de llamada, y array_map solamente realizará una operación de unión de las matrices de origen. Voy a demostrar esto con un par de ejemplos reales en la siguiente sección.

La función array_map devuelve una matriz de todos los valores procesados por la función de devolución de llamada.

En la siguiente sección analizaremos un par de ejemplos reales para comprender cómo funciona array_map.

Ejemplos reales

En esta sección discutiremos cómo usar la función array_map de diferentes maneras. 

Cómo convertir una matriz a minúsculas

Este es uno de los ejemplos más básicos y útiles. Cuando quieres realizar una operación específica en todos los elementos de una matriz, ¡la función array_map es el método a seguir!

1
<?php
2
function lowercase($element)
3
{
4
    return strtolower($element);
5
}
6
7
$array = ['Apple', 'BANANA', 'Mango', 'orange', 'GRAPES'];
8
$results = array_map('lowercase', $array);
9
print_r($results);
10
/**

11
Output:

12
Array

13
(

14
    [0] => apple

15
    [1] => banana

16
    [2] => mango

17
    [3] => orange

18
    [4] => grapes

19
)

20
**/
21
?>

Como puedes ver, hemos enviado la función invocable lowercase en el primer argumento, por lo que esto convierte todos los elementos de una matriz a minúsculas.

Cómo usar array_map con una clase

En este ejemplo veremos de qué manera puedes aplicar un método de clase a todos los elementos de una matriz.

1
<?php
2
class Utility
3
{
4
    public function formatPrice($element)
5
    {
6
        if (strpos($element, '$') === FALSE) {
7
                return '$' . $element;
8
        }
9
        return $element;
10
    }
11
}
12
13
$objUtility = new Utility();
14
$array = ['1', '$4', '6', '3', '$10'];
15
$results = array_map(array($objUtility, 'formatPrice'), $array);
16
print_r($results);
17
/**

18
Output:

19
Array

20
(

21
    [0] => $1

22
    [1] => $4

23
    [2] => $6

24
    [3] => $3

25
    [4] => $10

26
)

27
**/
28
?>

En el ejemplo anterior, hemos enviado array($objUtility, 'formatPrice') como una función invocable en el primer argumento. Básicamente, solo estamos verificando si un elemento de la matriz tiene como prefijo el símbolo $ y, si no es así, se lo anteponemos.

Operación de unión de múltiples matrices

Recuerda que en la sintaxis de la función array_map puedes enviar null como primer argumento en lugar de una función invocable. En esta sección veremos cómo funciona eso mediante un ejemplo.

1
<?php
2
$employeeNames = ['john', 'mark', 'lisa'];
3
$employeeEmails = ['john@example.com', 'mark@example.com', 'lisa@example.com'];
4
$results = array_map(null, $employeeNames, $employeeEmails);
5
print_r($results);
6
/**

7
Output:

8
Array

9
(

10
    [0] => Array

11
        (

12
            [0] => john

13
            [1] => john@example.com

14
        )

15
    [1] => Array

16
        (

17
            [0] => mark

18
            [1] => mark@example.com

19
        )

20
    [2] => Array

21
        (

22
            [0] => lisa

23
            [1] => lisa@example.com

24
        )

25


26
)

27
**/

Ya que hemos enviado el valor null en el primer argumento, la función lleva a cabo una operación de unión de todas las matrices enviadas a partir del segundo argumento en adelante. En nuestro caso, hemos enviado dos matrices, y la función array_map las combina en una sola matriz multidimensional.

Múltiples argumentos

Como discutimos anteriormente, puedes enviar múltiples matrices a array_map. En esta sección veremos cómo puedes usar eso con una función de devolución de llamada.

1
<?php
2
class Employee
3
{
4
    public $name;
5
    public $employee;
6
7
    public function __construct($name, $employee)
8
    {
9
        $this->name = $name;
10
        $this->employee = $employee;
11
    }
12
}
13
14
function createEmployeeObject($name, $email)
15
{
16
    return new Employee($name, $email);
17
}
18
19
$employeeNames = ['john', 'mark', 'lisa'];
20
$employeeEmails = ['john@example.com', 'mark@example.com', 'lisa@example.com'];
21
$results = array_map('createEmployeeObject', $employeeNames, $employeeEmails);
22
print_r($results);
23
/**

24
Output:

25
Array

26
(

27
    [0] => Employee Object

28
        (

29
            [name] => john

30
            [employee] => john@example.com

31
        )

32


33
    [1] => Employee Object

34
        (

35
            [name] => mark

36
            [employee] => mark@example.com

37
        )

38


39
    [2] => Employee Object

40
        (

41
            [name] => lisa

42
            [employee] => lisa@example.com

43
        )

44


45
)

46
**/

En el ejemplo anterior, la función invocable createEmployeeObject genera una matriz de objetos Employee.

Conclusión

En este artículo discutimos los conceptos básicos de la función array_map en PHP. También analizamos un par de ejemplos reales para demostrar el poder de la función array_map.