Skip to content

Instantly share code, notes, and snippets.

@SeanCannon
Last active July 12, 2023 03:30
  • Star 42 You must be signed in to star a gist
  • Fork 25 You must be signed in to fork a gist
Star You must be signed in to star a gist
Embed
What would you like to do?
PHP array_flatten() function. Convert a multi-dimensional array into a single-dimensional array.
<?php
/**
* Convert a multi-dimensional array into a single-dimensional array.
* @author Sean Cannon, LitmusBox.com | seanc@litmusbox.com
* @param array $array The multi-dimensional array.
* @return array
*/
function array_flatten($array) {
if (!is_array($array)) {
return false;
}
$result = array();
foreach ($array as $key => $value) {
if (is_array($value)) {
$result = array_merge($result, array_flatten($value));
} else {
$result = array_merge($result, array($key => $value));
}
}
return $result;
}
@tiagofrancafernandes
Copy link

tiagofrancafernandes commented Jan 13, 2023

Working with associative arrays:

/**
    * flatten function
    *
    * @param array $multiDimArray
    * @return array
    */
function flatten(array $multiDimArray): array
{
    $localFlatten = [];

    foreach ($multiDimArray as $key => $value) {
        if (\is_array($value)) {
            foreach (flatten($value) as $subKey => $subValue) {
                $localFlatten[$subKey] = $subValue;
            }
            continue;
        }

        $localFlatten[$key] = $value;
    }

    return $localFlatten;
}

Using

flatten([['abc' => 123, 'a' => 1, 'abc'], [2 => 'zxc']]);
  // Result:
  [
    "abc" => 123,
    "a" => 1,
    0 => "abc",
    2 => "zxc",
  ]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment