- var_export: documentation ( source)
- ctype_upper: documentation ( source)
- usort: documentation ( source)
- range: documentation ( source)
<?php
$data = ['_', '@', ...range(-10, 10), ...range('A', 'F'), ...range('a', 'f') ];
usort(
$data,
fn($a, $b) => ($b < 0 <=> $a < 0) // prioritize negatives
?: (ctype_upper((string) $b) <=> ctype_upper((string) $a)) // prioritize uppercase letters
?: (is_int($a) <=> is_int($b)) // deprioritize integers
?: ($a <=> $b) // sort normally
);
var_export($data);