<?php
$array = [
"GL001_M",
"GL001_XL",
"GL001_S",
"GL001_L",
"GL002_M",
"GL002_XS",
"GL002_S",
"GL002_L"
];
define('SIZES', array_flip(['XXS', 'XS', 'S', 'M', 'L', 'XL', 'XXL']));
$ids = [];
$sizes = [];
foreach ($array as $v) {
[$ids[], $size] = explode('_', $v, 2);
$sizes[] = SIZES[$size];
}
array_multisort($ids, $sizes, $array);
var_export($array);
preferences:
23.18 ms | 408 KiB | 5 Q