Funciones de Arrays
PHP Manual

array_map

(PHP 4 >= 4.0.6, PHP 5)

array_mapAplica la llamada de retorno especificada a los elementos de cada array

Descripción

array array_map ( callable $callback , array $array1 [, array $... ] )

array_map() devuelve un array que contiene todos los elementos de array1 después de haber aplicado la función callback a cada uno de ellos. El número de parámetros que la función callback acepte debería coincidir con el número de arrays que son pasados como argumentos a array_map().

Parámetros

callback

Función tipo llamada de retorno a ejecutar para cada elemento en cada array.

array1

Un array a recorrer con la función callback.

array

Lista variable de argumentos tipo array a recorrer con la función callback.

Valores devueltos

Devuelve un array que contiene todos los elementos de array1 después de aplicar la función callback a cada uno de ellos.

Ejemplos

Ejemplo #1 Ejemplo de array_map()

<?php
function cube($n)
{
    return(
$n $n $n);
}

$a = array(12345);
$b array_map("cube"$a);
print_r($b);
?>

Esto hace que $b contenga:

Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)

Ejemplo #2 array_map() usando la una función lamba (desde PHP 5.3.0)

<?php
$func 
= function($value) {
    return 
$value 2;
};

print_r(array_map($funcrange(15)));
?>
Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)

Ejemplo #3 array_map() - usando más arrays

<?php
function show_Spanish($n$m)
{
    return(
"The number $n is called $m in Spanish");
}

function 
map_Spanish($n$m)
{
    return(array(
$n => $m));
}

$a = array(12345);
$b = array("uno""dos""tres""cuatro""cinco");

$c array_map("show_Spanish"$a$b);
print_r($c);

$d array_map("map_Spanish"$a $b);
print_r($d);
?>

El resultado del ejemplo sería:

// printout of $c
Array
(
    [0] => The number 1 is called uno in Spanish
    [1] => The number 2 is called dos in Spanish
    [2] => The number 3 is called tres in Spanish
    [3] => The number 4 is called cuatro in Spanish
    [4] => The number 5 is called cinco in Spanish
)

// printout of $d
Array
(
    [0] => Array
        (
            [1] => uno
        )

    [1] => Array
        (
            [2] => dos
        )

    [2] => Array
        (
            [3] => tres
        )

    [3] => Array
        (
            [4] => cuatro
        )

    [4] => Array
        (
            [5] => cinco
        )

)

Usualmente, cuando se usan dos o más array, estos deberían ser de longitudes iguales ya que la llamada de retorno es aplicada en paralelo a los elementos correspondientes. Si los arrays son de longitudes diferentes, los más cortos serán extendidos con elementos vacíos para que coincidan con la logintud del más largo.

Un uso interesante de esta función es la construcción de un array de arrays, que puede ser llevada a cabo usando NULL como el nombre de la llamada de retorno.

Ejemplo #4 Creando un array de arrays

<?php
$a 
= array(12345);
$b = array("one""two""three""four""five");
$c = array("uno""dos""tres""cuatro""cinco");

$d array_map(null$a$b$c);
print_r($d);
?>

El resultado del ejemplo sería:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => one
            [2] => uno
        )

    [1] => Array
        (
            [0] => 2
            [1] => two
            [2] => dos
        )

    [2] => Array
        (
            [0] => 3
            [1] => three
            [2] => tres
        )

    [3] => Array
        (
            [0] => 4
            [1] => four
            [2] => cuatro
        )

    [4] => Array
        (
            [0] => 5
            [1] => five
            [2] => cinco
        )

)

Si el argumento array contiene claves tipo cadena, entonces el array devuelto tendrá claves tipo cadena si y solo si es pasado exactamente un array. Si más de un argumento es pasado, entonces el array devuelto siempre tendrá claves tipo entero.

Ejemplo #5 array_map() - con claves tipo cadena

<?php
$arr 
= array("stringkey" => "value");
function 
cb1($a) {
    return array (
$a);
}
function 
cb2($a$b) {
    return array (
$a$b);
}
var_dump(array_map("cb1"$arr));
var_dump(array_map("cb2"$arr$arr));
var_dump(array_map(null,  $arr));
var_dump(array_map(null$arr$arr));
?>

El resultado del ejemplo sería:

array(1) {
  ["stringkey"]=>
  array(1) {
    [0]=>
    string(5) "value"
  }
}
array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(5) "value"
    [1]=>
    string(5) "value"
  }
}
array(1) {
  ["stringkey"]=>
  string(5) "value"
}
array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(5) "value"
    [1]=>
    string(5) "value"
  }
}

Ver también


Funciones de Arrays
PHP Manual