3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array = [ 'id_1_1' => 'id1', 'foo_1_2' => 'value1_1', 'bar_1_3' => 'value1_2', 'more_1_4' => 'value1_3', 'id_2_1' => 'id2', 'foo_2_2' => 'value2_1', 'bar_2_3' => 'value2_2', 'more_2_4' => 'value2_3' ]; function convert($a) { $map = [ ]; $result = []; foreach ($a as $array_key => $value) { list($newkey, $number) = explode('_', $array_key); if ($newkey === 'id') { $map[$number] = $value; $result[$value] = []; } elseif (key_exists($number, $map)) { $id = $map[$number]; $result[$id][$newkey] = $value; } } return $result; } $result = convert($array); var_export($result);
Output for 5.6.38, 7.0.33, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
array ( 'id1' => array ( 'foo' => 'value1_1', 'bar' => 'value1_2', 'more' => 'value1_3', ), 'id2' => array ( 'foo' => 'value2_1', 'bar' => 'value2_2', 'more' => 'value2_3', ), )
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 array ( 'id1' => array ( 'foo' => 'value1_1', 'bar' => 'value1_2', 'more' => 'value1_3', ), 'id2' => array ( 'foo' => 'value2_1', 'bar' => 'value2_2', 'more' => 'value2_3', ), )

preferences:
181.81 ms | 402 KiB | 180 Q