我遇到了一个排序问题,我有一个包含 10 个数字 (1-10) 的数组,我需要按以下方式对其进行排序,例如,10 将出现在 1 之后...
想要的结果
$arr['a1','a10','a2','a3','a4','a5','a6','a7','a8','a9'];
实际结果
$arr['a1','a2','a3','a4','a5','a6','a7','a8','a9','a10'];
sort($arr);
$arr['a10','a1','a2','a3','a4','a5','a6','a7','a8','a9'];
我不知道这种排序的名称或如何执行它,如果有人可以帮助我,我将不胜感激。
注意:数字是字符串的一部分
尝试
sort($arr,SORT_STRING)
显式地将输入视为字符串。
编辑:现在您已经给出了实际的字符串,请尝试以下操作:
usort($arr,function($a,$b) {
$a = explode("=",$a);
$b = explode("=",$b);
return $a[0] == $b[0] ? strcmp($a[1],$b[1]) : strcmp($a[0],$b[0]);
});
您可以使用第二个参数更改排序的行为。
试试这个:
sort($arr, SORT_STRING);