2017-05-06 179 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