3v4l.org

run code in 300+ PHP versions simultaneously
<?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