Software by Steve

Sep 25, 2014

Combining arrays in PHP using functional programming

I recently had a use case where I needed to combine two arrays in PHP...

<?php
$people = ['Bob', 'Frank'];
$ages = [23, 54];

... to end up with an array that looked like this:

<?php
Array
(
    [0] => Array
        (
            [0] => Bob
            [1] => 23
        )

    [1] => Array
        (
            [0] => Frank
            [1] => 54
        )
)

In python, I'd just use the zip function - I wanted something similar in PHP. The solution was to pass null as the first argument to array_map:

<?php
$people = array_map(null, $people, $ages);

For comparison's sake, here's how you'd achieve this without using array_map:

<?php
$tmp_people = [];
foreach ($people as $k => $v) {
    $tmp_people[] = [$v, $ages[$k]];
}
$people = $tmp_people;

PHP is far from a functional programming language when compared to the likes of Clojure, Erlang, Haskell or even python, but functional tools like array_map can certainly make everyday tasks easier.

Tagged: