PHP 的 array_map 對於處理資料來說很好用,可以把原始資料透過簡單的轉換變成符合想要使用的格式,語法如下:

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

 

範例一:

function cube($n)
{
    return ($n * $n * $n);
}

$a = [1, 2, 3, 4, 5];
$b = array_map('cube', $a);
print_r($b);

這樣可以得到輸入的內容三階層的新的值的陣列。

 

範例二:

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

print_r(array_map($func, range(1, 5)));

可以得到一個 [2,4,6,8,10] 的陣列。

 

範例三:

$products=[
    [
        "product_id"=>1
    ],
    [
        "product_id"=>2
    ],
    [
        "product_id"=>3
    ]
];

$arr=array_map(function($value){
    return $value["product_id"];
}, $products);

print_r($arr);

這樣就可以把值給過濾出來變成一個單純的陣列。

 

範例四:使用多個陣列

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

function map_Spanish($n, $m)
{
    return [$n => $m];
}

$a = [1, 2, 3, 4, 5];
$b = ['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);

結果會是這樣:

// 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
        )

)