2015-02-09 170 views
-3

我正在尋找最有效的方法來排序php.I中的多維數組,我想按[result][index][kl][0]中的值name對數組進行排序。什麼是最快的方法來做到這一點?我的數組有100個元素。 我的陣列看起來像這樣:對多維數組進行排序的最有效方法(php)

Array 
(
[jsonrpc] => 2.0 
[id] => req-002 
[result] => Array 
    (
     [0] => Array 
      (
       [type] => subst 
       [lsid] => 11 
       [date] => 20150209 
       [startTime] => 955 
       [endTime] => 1040 
       [kl] => Array 
        (
         [0] => Array 
          (
           [id] => 29 
           [name] => S12UB 
          ) 

        ) 

      ) 

     [1] => Array 
      (
       [type] => subst 
       [lsid] => 11 
       [date] => 20150209 
       [startTime] => 1045 
       [endTime] => 1130 
       [kl] => Array 
        (
         [0] => Array 
          (
           [id] => 29 
           [name] => S12UB 
          ) 

        ) 

      ) 

謝謝。

回答

1

strcmp一起使用用戶定義的排序功能,如usort

function compareByName($a, $b) { 
    // the strcmp returns a numeric value above or below 0 depending on the comparison 
    return strcmp($a['k1'][0]['name'], $b['k1'][0]['name']); 
} 

然後,假設您的多維數組被命名爲$array,與新排序的陣列更換多維數組$array['result']

$array['result'] = usort($array['result'], 'compareByName'); 

usortstrcmp應該是不言自明的理解代碼是如何工作上面的文檔。

0
$result = uasort($result, function($a, $b) { 
    return strcmp($a['kl'][0]['name'], $b['kl'][0]['name']); 
});