<?php
$data = ['_', '@', ...range(-10, 10), ...range('A', 'Z'), ...range('a', 'z') ];
$negatives = [];
$uppers = [];
$symbols = [];
foreach ($data as $v) {
$negatives[] = is_int($v) && $v < 0;
$uppers[] = ctype_upper((string) $v);
$symbols[] = in_array($v, ['_', '@']);
}
array_multisort(
$negatives,
SORT_DESC,
$uppers,
SORT_DESC,
$symbols,
SORT_DESC,
$data
);
var_export($data);
- 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 (
0 => -10,
1 => -9,
2 => -8,
3 => -7,
4 => -6,
5 => -5,
6 => -4,
7 => -3,
8 => -2,
9 => -1,
10 => 'A',
11 => 'B',
12 => 'C',
13 => 'D',
14 => 'E',
15 => 'F',
16 => 'G',
17 => 'H',
18 => 'I',
19 => 'J',
20 => 'K',
21 => 'L',
22 => 'M',
23 => 'N',
24 => 'O',
25 => 'P',
26 => 'Q',
27 => 'R',
28 => 'S',
29 => 'T',
30 => 'U',
31 => 'V',
32 => 'W',
33 => 'X',
34 => 'Y',
35 => 'Z',
36 => '@',
37 => '_',
38 => 0,
39 => 1,
40 => 2,
41 => 3,
42 => 4,
43 => 5,
44 => 6,
45 => 7,
46 => 8,
47 => 9,
48 => 10,
49 => 'a',
50 => 'b',
51 => 'c',
52 => 'd',
53 => 'e',
54 => 'f',
55 => 'g',
56 => 'h',
57 => 'i',
58 => 'j',
59 => 'k',
60 => 'l',
61 => 'm',
62 => 'n',
63 => 'o',
64 => 'p',
65 => 'q',
66 => 'r',
67 => 's',
68 => 't',
69 => 'u',
70 => 'v',
71 => 'w',
72 => 'x',
73 => 'y',
74 => 'z',
)
preferences:
73.61 ms | 404 KiB | 91 Q