(PHP 4 >= 4.0.6, PHP 5)
array_map — Aplica la llamada de retorno especificada a los elementos de cada 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().
  
callbackFunció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.
      
   Devuelve un array que contiene todos los elementos de array1
   después de aplicar la función callback a cada uno de ellos.
  
Ejemplo #1 Ejemplo de array_map()
<?php
function cube($n)
{
    return($n * $n * $n);
}
$a = array(1, 2, 3, 4, 5);
$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($func, range(1, 5)));
?>
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(1, 2, 3, 4, 5);
$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(1, 2, 3, 4, 5);
$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"
  }
}