3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array = [ '1.1', '1.2', '1.3', '2.1', '2.2', '2.3', '3.1', '3.2', ]; $result = [null]; // temporary declaration unset($result[0]); // move pointer to 1 for next push foreach ($array as $v) { sscanf($v, '%d', $major); if (!isset($ref[$major])) { $result[] = &$ref[$major]; $ref[$major] = [null]; // temporary declaration unset($ref[$major][0]); // move pointer to 1 for next push } $ref[$major][] = $v; } var_export($result);
Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
array ( 1 => array ( 1 => '1.1', 2 => '1.2', 3 => '1.3', ), 2 => array ( 1 => '2.1', 2 => '2.2', 3 => '2.3', ), 3 => array ( 1 => '3.1', 2 => '3.2', ), )

preferences:
73.84 ms | 402 KiB | 91 Q