3v4l.org

run code in 500+ PHP versions simultaneously
<?php class FlattenArray { private array $mapped = []; public function __construct(array $input) { $this->mapped = array_map(fn ($currentKey) => $this->mapRecursive(explode('_', $currentKey), $input[$currentKey]), array_keys($input)); } private function mapRecursive(array $keys, $value) { if (empty($keys)) return; return array_fill_keys( [array_shift($keys)], $this->mapRecursive($keys, $value) ?? $value ); } public function joinAndFlatten() { return $this->mapped; } } var_dump((new FlattenArray(['a_a' => '2', 'a_b' => '333', 'c_c' => '123']))->joinAndFlatten());
Output for 8.1.5 - 8.1.34, 8.2.10 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
array(3) { [0]=> array(1) { ["a"]=> array(1) { ["a"]=> string(1) "2" } } [1]=> array(1) { ["a"]=> array(1) { ["b"]=> string(3) "333" } } [2]=> array(1) { ["c"]=> array(1) { ["c"]=> string(3) "123" } } }

preferences:
85.28 ms | 871 KiB | 4 Q