2013-05-01 21 views
8

目前,我有我的数组按字符串长度排序。但是,当字符串长度相等时,我如何按价值排序?如何按字符串长度对数组进行排序,然后按PHP中的值对数组进行排序?

举个例子,我当前的代码:

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

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

usort($array,'lensort'); 

print_r($array); 

输出:

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

但是,我想它由以下代替排序:

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

回答

11

一体化两者都检查到您的比较器中:

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

您可以从this demo看到这个打印:

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