2015-07-29 3 views
1

У меня есть этот многомерный массивPHP - сортировка многомерный массив с помощью array_multisort

Array 
(
    [0] => Array 
     (
      [at] => 0 
      [bt] => 9 
     ) 

    [1] => Array 
     (
      [at] => 3 
      [bt] => 5 
     ) 

    [2] => Array 
     (
      [at] => 0 
      [bt] => 3 
     ) 

) 

Я хочу, чтобы отсортировать его по ключу «в», так что я попробовал этот код

//$process = array() given above 

$p = array(); 

foreach ($process as $key => $row) { 
     $p[$key] = $row['at']; 
} 

array_multisort($p, SORT_NUMERIC, SORT_ASC, $process); 

и я получаю этот результат

Array 
(
    [0] => Array 
     (
      [at] => 0 
      [bt] => 3 
     ) 

    [1] => Array 
     (
      [at] => 0 
      [bt] => 9 
     ) 

    [2] => Array 
     (
      [at] => 3 
      [bt] => 5 
     ) 

) 

Он сортирует «на», НО также сортирует «bt».

Как я могу отсортировать этот массив на ключе «на» ТОЛЬКО?

Как это:

Array 
(
    [0] => Array 
     (
      [at] => 0 
      [bt] => 9 
     ) 

    [1] => Array 
     (
      [at] => 0 
      [bt] => 3 
     ) 

    [2] => Array 
     (
      [at] => 3 
      [bt] => 5 
     ) 

) 

Спасибо.

EDIT:

А ниже ответ Матье Lescaudron

Когда я только это на моем массиве,

Array 
(
    [0] => Array 
     (
      [at] => 0 
      [bt] => 9 
     ) 

    [1] => Array 
     (
      [at] => 0 
      [bt] => 3 
     ) 
) 

Как я могу предотвратить его сортировки, так как я только хотите отсортировать его по клавише "at". И ничего не сортировать там, так как они оба 0.

ответ

2

Использование usort:

$array = array(
      array('at' => 0, 'bt' => 9), 
      array('at' => 3, 'bt' => 5), 
      array('at' => 0, 'bt' => 3) 
     ); 

usort($array, function($a, $b) { 
    return $a['at'] - $b['at']; 
}); 

var_dump($array); 

Try it on Php online

+0

Я постараюсь узнать usort. кстати, он работает. спасибо – akoxi

+0

Я отредактировал вопрос. Я просто подумал, что это произойдет, только если у меня есть только два элемента в массиве '$ process'. Поэтому я создаю условие в функции обратного вызова. Еще раз спасибо. – akoxi

Смежные вопросы