2017-05-06 5 views
-1

J'ai un tableau avec les piqûres suivantes:sorte PHP par ordre alphabétique que par numéro

A1 
A2 
A5 
A10 
B2 
B4 
C10 
B5 
C1 
B1 
C2 

Je dois le résultat suivant:

A1 
B1 
C1 
A2 
B2 
C2 
B4 
A5 
B5 
A10 
C10 

Quelqu'un pourrait-il me aider s'il vous plaît?

+0

Me semble plus à moi de trier par numéro, puis par alphabet –

+0

Sont ces références de cellule de feuille de calcul Excel? –

Répondre

2

usort() vous permet de créer une règle de tri personnalisé, vous pouvez créer une règle qui divise la valeur en lettres et des chiffres, et de comparer les

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

Merci, cela fonctionne très bien! –

0

pas l'approche la plus efficace, mais assez laconique sera d'utiliser array_multisort et array_map:

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

Voici working demo.