PHP
Flatten a Multidimensional Array
Efficiently convert a nested, multidimensional array into a single-level, flat array in PHP, simplifying iteration and data processing for easier manipulation.
<?php
$nestedArray = [
'a' => 1,
'b' => [2, 3],
'c' => [
'd' => 4,
'e' => [5, 6]
],
'f' => 7
];
function flattenArray(array $array): array
{
$result = [];
foreach ($array as $value) {
if (is_array($value)) {
$result = array_merge($result, flattenArray($value));
} else {
$result[] = $value;
}
}
return $result;
}
$flatArray = flattenArray($nestedArray);
print_r($flatArray);
// Alternative using array_walk_recursive (only extracts scalar values)
$flatArrayRecursiveWalk = [];
array_walk_recursive($nestedArray, function($value) use (&$flatArrayRecursiveWalk) {
$flatArrayRecursiveWalk[] = $value;
});
print_r($flatArrayRecursiveWalk);
?>
How it works: This snippet provides two methods for flattening a multidimensional array into a single-level array. The `flattenArray` function uses recursion: it iterates through the input array, and if an element is itself an array, it calls itself recursively, merging the results. Otherwise, it adds the scalar value to the result. An alternative using `array_walk_recursive` is also shown; this built-in function applies a user-defined callback to every scalar value in an array, recursively. While `array_walk_recursive` is simpler, it only extracts scalar values, whereas the custom recursive function can handle any array structure and merge all elements.