2013-05-01 11 views
8

Obecnie mam sortowanie według długości łańcucha. Ale kiedy długości łańcuchów są równe, jak sortować według wartości?Jak sortować tablicę według długości łańcucha, a następnie według wartości w PHP?

Jako przykład, mój bieżący kod:

$array = array("A","BC","AA","C","BB", "B"); 

function lensort($a,$b){ 
    return strlen($a)-strlen($b); 
} 

usort($array,'lensort'); 

print_r($array); 

Wyjścia:

Array 
(
    [0] => C 
    [1] => A 
    [2] => B 
    [3] => BB 
    [4] => AA 
    [5] => BC 
) 

Ale chciałbym je sortować według poniższego zamiast:

Array 
(
    [0] => A 
    [1] => B 
    [2] => C 
    [3] => AA 
    [4] => BB 
    [5] => BC 
) 

Odpowiedz

11

Incorporate obydwie kontrole w twoim komparatorze:

function lensort($a,$b){ 
    $la = strlen($a); $lb = strlen($b); 
    if($la == $lb) { 
     return strcmp($a, $b); 
    } 
    return $la - $lb; 
} 

Widać z this demo że ten drukuje:

Array 
(
    [0] => A 
    [1] => B 
    [2] => C 
    [3] => AA 
    [4] => BB 
    [5] => BC 
) 
Powiązane problemy