1

我遇到了一个排序问题,我有一个包含 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'];

我不知道这种排序的名称或如何执行它,如果有人可以帮助我,将不胜感激。

注意:数字是字符串的一部分

4

3 回答 3

6

尝试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]);
});
于 2012-08-03T17:45:08.497 回答
0

当然,您想按字母顺序排序,而不是按数字排序。

sort($arr, SORT_STRING);

参考: http: //php.net/manual/en/function.sort.php

于 2012-08-03T17:50:03.720 回答
0

您可以使用它的第二个参数更改排序的行为。

试试这个:

sort($arr, SORT_STRING);
于 2012-08-03T17:54:47.447 回答