Функции за работа с масиви
PHP Manual

array_map

(PHP 4 >= 4.0.6, PHP 5)

array_mapПрилага функция за обратно извикване към елементите на дадените масиви

Описание

array array_map ( callback $callback , array $arr1 [, array $... ] )

array_map() връща масив, съдържащ всички елементи на arr1 след прилагането на функция callback към всеки от тях. Броят на параметрите, които трябва да приема функция callback трябва да е равен на броя на масивите предадени на array_map().

Параметри

callback

Функция за обратно извикване, която да се изпълни за всеки елемент във всеки масив.

arr1

Масив, който да бъде обработен от функцията за обратно извикване указана с callback .

array

Списък с масиви, върху които да се приложи функция callback .

Връщани стойности

Връща масив, съдържаш всички елементи на arr1 , след прилагането на функция callback върху всеки от тях.

Примери

Example #1 Пример за array_map()

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

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

Стойността на променливата $b ще бъде:

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

Example #2 array_map() използваща ламбда функция (от PHP 5.3.0)

<?php

/* От PHP 5.3.0 */

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

print_r(array_map($funcrange(15)));

?>
Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)

Примери

Example #3 array_map() - използване на повече масиви

<?php
function show_Spanish($n$m)
{
    return(
"Числото $n е $m на испански");
}

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

Примерът по-горе ще изведе:

// променливата $c
Array
(
    [0] => Числото 1 е uno на испански
    [1] => Числото 2 е dos на испански
    [2] => Числото 3 е tres на испански
    [3] => Числото 4 е cuatro на испански
    [4] => Числото 5 е cinco на испански
)

// ппроменливата $d
Array
(
    [0] => Array
        (
            [1] => uno
        )

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

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

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

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

)

Обикновено при използването на два или повече масиви, трябва да бъдат с равна дължина, тъй като функцията за обратно извикване се прилага паралелно за съответните елементи. Ако масивите не са с еднаква дължина, то този с най-малко брой елементи ще бъде допълнен с празни елементи

Една интересна употреба на тази функция е за създаване на масиви от масиви, което може лесно да се направи посредством стойността NULL като име на функцията за обратно извикване.

Example #4 Създаване на масив от масиви

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

Примерът по-горе ще изведе:

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
        )

)

Ако параметърът array съдържа низови ключове, върнатият масив ще съдържа низови ключове единствено и само, ако е предаден точно един масив. Ако е предаден повече от един аргумент, тогава върнатият масив ще има целочислени ключове.

Example #5 array_map() - с низови ключове

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

Примерът по-горе ще изведе:

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"
  }
}

Вж. също

информация относно типа callback (обратно извикване)


Функции за работа с масиви
PHP Manual