2010-03-04 3 views
3

Как я могу отсортировать массив на основе двух конкретных значений в массиве? Например:Как отсортировать массив на основе определенного поля в массиве?

$arr = array(
      array('a' => array('field1' => 'Abc', 'field2' => 'Def'), 'b' => 0) 
      array('a' => array('field1' => 'Ghi', 'field2' => 'Jkl'), 'b' => 0) 
      ); 

Я хочу, чтобы отсортировать этот массив на основе переменной $arr[$i]['a']['field1']. Как я могу это сделать?

ответ

7

Дайте этому попытку:

function cmp($a, $b) { 
    if ($a['a']['field1'] == $b['a']['field1']) 
     return 0; 
    return ($a['a']['field1'] < $b['a']['field1']) ? -1 : 1; 
} 

uasort($arr, 'cmp'); 

Это просто небольшое изменение примера при условии, на странице PHP документации: http://www.php.net/manual/en/function.uasort.php

+1

Вы _could_ однако печатаете функцию до 1 строки: 'return strcmp ($ a ['field'], $ b ['field']);' – Wrikken

1

в этом конкретном случае (соберите на самом первом элементе ver y first subarray), простого sort() будет достаточно.

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