Written by James McDonald

May 18, 2022

array_map can take multiple arrays.

I like how it starts mapping through them starting at the first element of each array all together and then keeps mapping until it completes the largest array.

Each argument to the callback function is the current element of the arrays you have passed into array_map

Unlike using array_map on one array where it passes the entire key=>value pair of each element into the callback. When using multiple arrays it only passes the value into array map not the key. So the associative array just uses the values and loses the key.

<?php

$arr1 = ['a', 'b', 'c'];
$arr2 = ['aa', 'bb', 'cc'];
$arr3 = [1, 2, 3, 4, 5, 6];
$arr4 = ['a' => 1, 'b' => 2, 'c' => 3];
$arr5 = ['head' => 'H'];

$mapped = array_map(function ($one, $two, $three, $four, $five) {
    return compact('one', 'two', 'three', 'four', 'five');
}, $arr1, $arr2, $arr3, $arr4, $arr5);

echo print_r($mapped, true);

// output
// you lose the array keys
Array
(
    [0] => Array
        (
            [one] => a
            [two] => aa
            [three] => 1
            [four] => 1
            [five] => H
        )

    [1] => Array
        (
            [one] => b
            [two] => bb
            [three] => 2
            [four] => 2
            [five] => 
        )

    [2] => Array
        (
            [one] => c
            [two] => cc
            [three] => 3
            [four] => 3
            [five] => 
        )

    [3] => Array
        (
            [one] => 
            [two] => 
            [three] => 4
            [four] => 
            [five] => 
        )

    [4] => Array
        (
            [one] => 
            [two] => 
            [three] => 5
            [four] => 
            [five] => 
        )

    [5] => Array
        (
            [one] => 
            [two] => 
            [three] => 6
            [four] => 
            [five] => 
        )

)

Example of passing a single array into array_map (keys are available)


$mapped2 = array_map(function ($el) {
    return $el;
}, ['a' => 1, 'b' => 2, 'c' => 3]);

echo print_r($mapped2, true);

// output
Array
(
    [a] => 1
    [b] => 2
    [c] => 3
)

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

The reCAPTCHA verification period has expired. Please reload the page.

You May Also Like…

Clear HSTS Settings in CHrome

Open chrome://net-internals/#hsts enter the domain in the query field and click Query to confirm it has HSTS settings...

Ubuntu on Hyper-v

It boils town to installing linux-azure # as root or sudo apt-get update apt-get install linux-azure...