PHP数组排序()

时间:2012-08-03 17:43:00

标签: php sorting

我坚持排序问题,我有一个包含10个数字(1-10)的数组,我需要按照以下方式对10进行排序,例如...

期望的结果

$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'];

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

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

3 个答案:

答案 0 :(得分: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]);
});

答案 1 :(得分:0)

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

sort($arr, SORT_STRING);

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

答案 2 :(得分:0)

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

试试这个:

sort($arr, SORT_STRING);