<?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"));
- Output for 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
- Deprecated: Optional parameter $carry declared before required parameter $subject is implicitly treated as a required parameter in /in/J1NeJ on line 12
Array
(
[0] => A
[1] => B
[2] => CC
[3] => CCCC
[4] => CCCCCC
[5] => DDD
[6] => EFG
[7] => HIJ
[8] => LMNOP
[9] => 2
[10] => b
)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => six
[6] => 78
[7] => 9
[8] => 10
)
- Output for 8.3.5
- Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Deprecated: Optional parameter $carry declared before required parameter $subject is implicitly treated as a required parameter in /in/J1NeJ on line 12
Array
(
[0] => A
[1] => B
[2] => CC
[3] => CCCC
[4] => CCCCCC
[5] => DDD
[6] => EFG
[7] => HIJ
[8] => LMNOP
[9] => 2
[10] => b
)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => six
[6] => 78
[7] => 9
[8] => 10
)
- Output for 8.0.0 - 8.0.30
- Deprecated: Required parameter $subject follows optional parameter $carry in /in/J1NeJ on line 12
Array
(
[0] => A
[1] => B
[2] => CC
[3] => CCCC
[4] => CCCCCC
[5] => DDD
[6] => EFG
[7] => HIJ
[8] => LMNOP
[9] => 2
[10] => b
)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => six
[6] => 78
[7] => 9
[8] => 10
)
- Output for 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33
- Array
(
[0] => A
[1] => B
[2] => CC
[3] => CCCC
[4] => CCCCCC
[5] => DDD
[6] => EFG
[7] => HIJ
[8] => LMNOP
[9] => 2
[10] => b
)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => six
[6] => 78
[7] => 9
[8] => 10
)
- Output for 5.6.0 - 5.6.40, 7.0.0 - 7.0.33
- Parse error: syntax error, unexpected '?', expecting variable (T_VARIABLE) in /in/J1NeJ on line 12
Process exited with code 255.
preferences:
220.06 ms | 402 KiB | 291 Q