<?php
/**
* Flatten a multi-dimensional array to a single-level array,
* sorting the entries in order to depth first.
*
* @param array $carry Optional Array to initialize
* @param mixed $subject Array or value that has data in potential multi-dimensions.
*
* @return array
*/
function array_flatten(?array $carry = [], $subject): array
{
return array_reduce((array) $subject, function(array $carry, $item) {
return is_array($item)
? array_flatten($carry, $item)
: array_merge($carry, (array) $item);
}, (array) $carry);
}
print_r(array_flatten(null, array(
array('A',
array('B',
array('CC','CCCC','CCCCCC'),
array('DDD','EFG','HIJ','LMNOP')
)
),
array('2'),
'b',
array(array(),array(),array()),
)));
$array = array(1,2,[3,4],5,'six',array(array('78',9)),10);
print_r(array_reduce($array, "array_flatten"));
preferences:
52.06 ms | 402 KiB | 5 Q