2013-05-01 7 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 
) 
संबंधित मुद्दे