<?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);
preferences:
13.37 ms | 402 KiB | 5 Q