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…

Squarespace Image Export

To gain continued access to your Squarespace website images after cancelling your subscription you have several...

MySQL 8.x GRANT ALL STATEMENT

-- CREATE CREATE USER 'tgnrestoreuser'@'localhost' IDENTIFIED BY 'AppleSauceLoveBird2024'; GRANT ALL PRIVILEGES ON...

Exetel Opt-Out of CGNAT

If your port forwards and inbound and/or outbound site-to-site VPN's have failed when switching to Exetel due to their...