2017-05-06 174 views
-1

我有以下刺阵列:PHP排序字母比数

A1 
A2 
A5 
A10 
B2 
B4 
C10 
B5 
C1 
B1 
C2 

我需要以下结果:

A1 
B1 
C1 
A2 
B2 
C2 
B4 
A5 
B5 
A10 
C10 

有人能帮助我吗?

+0

看起来更像我,喜欢按编号排序,然后按字母排序 –

+0

这些Excel电子表格单元格引用是否正确? –

回答

2

usort()允许您创建一个自定义排序规则,这样你就可以创建一个分裂的价值为字母和数字的规律,并比较这些

usort(
    $data, 
    function($a, $b) { 
     sscanf($a, '%[A-Z]%d', $ac, $ar); 
     sscanf($b, '%[A-Z]%d', $bc, $br); 
     return ($ar == $br) ? $ac <=> $bc : $ar <=> $br; 
    } 
); 

Demo

+0

谢谢,这个作品很棒! –

0

不是最有效的,但相当简洁的方法将是使用array_multisortarray_map

array_multisort(
    array_map(function ($item) { return substr($item, 1); },$array), 
    array_map(function ($item) { return $item[0]; },$array), 
    $array 
); 

这里是working demo