2015-02-09 2 views
-3

Я ищу наиболее эффективный способ сортировки многомерного массива в php.I хочу отсортировать массив по значению name в [result][index][kl][0]. Каков самый быстрый способ сделать это? Мой массив имеет 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

Используйте определяемые пользователем функции сортировки, как usort вместе с strcmp:

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'); 

документация для usort и strcmp должны быть понятны для понимания того, как работает код выше.

0
$result = uasort($result, function($a, $b) { 
    return strcmp($a['kl'][0]['name'], $b['kl'][0]['name']); 
}); 
Смежные вопросы