我的练习是将所有字符首先按字母顺序排列,然后按数字顺序排列,最后按所有其他字符排列,每个字符按ASCII顺序按以下3组进行排列。 就像
./ssap.php toto tutu 4234 "_hop A2l+ XXX" ## "1948372 AhAhAh"
AhAhAh
A2l+
toto
tutu
XXX
1948372
4234
##
_hop
答案 0 :(得分:0)
您不能使用简单的asort
来完成此操作,而应将其替换为uasort
。
这暗示了一种可能的方法,您可以通过添加更多条件来完成此操作(请参阅内部注释):
uasort($ar, function($a, $b) {
if(ctype_alpha(substr($a, 0, 1)) && is_numeric(substr($b, 0, 1))) {
echo "comparing $a $b\n";
return -1;
}
if(ctype_alpha(substr($b, 0, 1)) && is_numeric(substr($a, 0, 1))) {
echo "comparingx $a $b\n";
return 1;
}
// add more code here to compare words with non-alphanumeric characters
// and other custom conditions if you find some issues
return ($a < $b) ? -1 : 1;
});