How to Flatten a Multidimensional Array in PHP?

Input

$array = [
    'a' => [
        'x' => 'X',
        'y' => 'Y',
        'z' => 'Z',
    ],
    'b' => [
        'p' => 'P',
        'q' => 'Q',
        'o' => 'M',
    ],
];

Process:

array_merge(...array_values($array))

Output:

echo '<pre>';
print_r(array_merge(...array_values($array )));
echo '</pre>';
Array
(
    [x] => X
    [y] => Y
    [z] => Z
    [p] => P
    [q] => Q
    [o] => M
)

Other Solution:

Solution for 2 dimensional array

$array  = your array

$result = call_user_func_array('array_merge', $array);

echo "<pre>";
print_r($result);

Here is the solution which works for multi-dimensional array :

function array_flatten($array) {
    $return = array();
    foreach ($array as $key => $value) {
        if (is_array($value)){
            $return = array_merge($return, array_flatten($value));
        } else {
            $return[$key] = $value;
        }
    }

    return $return;
}

$array  = Your array

$result = array_flatten($array);

echo "<pre>";
print_r($result);
echo "</pre>";

Leave a Reply

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