2013-05-01 25 views
8

Derzeit habe ich mein Array nach String-Länge sortiert. Aber wenn die Stringlängen gleich sind, wie sortiere ich nach Wert?Wie sortiere ich ein Array nach Zeichenkettenlänge dann nach Wert in PHP?

Als Beispiel meine aktuellen Code:

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

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

usort($array,'lensort'); 

print_r($array); 

Ausgänge:

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

Aber ich möchte es durch die folgende Stelle sortieren:

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

Antwort

11

Incorporate beide Prüfungen in Ihren Vergleicher:

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

Sie können von this demo sehen, dass dieser Druck:

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