2012-05-19 30 views
0

有人能幫助我嗎?我試圖通過內部數組的長度(降序)對二維數組進行排序。如何在PHP中通過內部數組的長度對二維數組進行排序?

這個數組:

Array 
    (
     [0] => Array 
     (
      [0] => "a" 
     ) 

     [1] => Array 
     (
      [0] => "a" 
      [1] => "b" 
      [2] => "c" 
     ) 

     [2] => Array 
     (
      [0] => "a" 
      [1] => "b" 
     ) 
    ) 

應導致此有序陣列:

Array 
    (
     [0] => Array 
     (
      [0] => "a" 
      [1] => "b" 
      [2] => "c" 
     ) 

     [1] => Array 
     (

      [0] => "a" 
      [1] => "b" 

     ) 

     [2] => Array 
     (
      [0] => "a" 

     ) 
    ) 

你有一個提示?

回答

0

是的,請使用usort按元素排序count()

<?php 

header("Content-type: text/plain"); 

$array = array(
    array(
     "item1" => "key1", 
     "item2" => "key2", 
    ), 
    array(
     "item1" => "key1", 
     "item2" => "key2", 
     "item3" => "key3" 
    ), 
    array(
     "item1" => "key1", 
    ) 
); 

usort($array, function($el1, $el2) { 
    if (count($el1) === count($el2)) { 
     return 0; 
    } 
    return count($el1) < count($el2) ? 1 : -1; 
}); 

print_r($array); 
1
// Comparison function 
function cmp($a, $b) { 
    $ca = count($a); 
    $cb = count($b); 
    if($ca == $cb) 
     return 0; 
    return ($ca < $cb) ? -1 : 1; 
} 

// Sort the array 
uasort($array, 'cmp'); 
+0

謝謝馬爾欽!這很好! – user1405140

相關問題