<?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']));
array_multisort(
...array_merge(
array_map(
null,
...array_map(
fn($v) =>
(fn($id, $size) => [$id, SIZES[$size]])(...explode('_', $v, 2)),
$array
)
),
[&$array]
)
);
var_export($array);
- Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
- array (
0 => 'GL001_S',
1 => 'GL001_M',
2 => 'GL001_L',
3 => 'GL001_XL',
4 => 'GL002_XS',
5 => 'GL002_S',
6 => 'GL002_M',
7 => 'GL002_L',
)
preferences:
74.43 ms | 407 KiB | 5 Q