2013-05-01 11 views
8

Attualmente, ho il mio array ordinamento per lunghezza della stringa. Ma, quando le lunghezze delle stringhe sono uguali, come posso ordinare per valore?Come si ordina un array in base alla lunghezza della stringa e in base al valore in PHP?

A titolo di esempio, il mio codice corrente:

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

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

usort($array,'lensort'); 

print_r($array); 

Uscite:

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

Ma, mi piacerebbe che per ordinare dal seguente invece:

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

risposta

11

Incorporate entrambi i controlli nel tuo comparatore:

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

Si può vedere da this demo che questa stampa:

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