2010-04-13 6 views
0

У меня есть массив, как показано ниже.Как отсортировать массив по определенному ключу?

$array[0]['keyword'] = 'cricket '; 
$array[0]['noofhits'] = '26'; 

$array[1]['keyword'] = 'food '; 
$array[1]['noofhits'] = '17'; 

$array[2]['keyword'] = 'mypax'; 
$array[2]['noofhits'] = '22'; 

$array[3]['keyword'] = 'next'; 
$array[3]['noofhits'] = '22'; 

$array[4]['keyword'] = 'nextbutton'; 
$array[4]['noofhits'] = '22'; 

$array[5]['keyword'] = 'picture'; 
$array[5]['noofhits'] = '18'; 

Я хочу отсортировать массив, используя noofhits. Как я могу сделать? Спасибо за ваш совет.

Soory для предыдущего. Спасибо за ваши ответы.

+2

С помощью этого точного кода у вас есть только массив с одним элементом. – Ikke

+1

Я вижу вещи ..? Ваш код перезаписывает свои данные. – zaf

ответ

9

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

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

usort ожидает, что функция сравнения вернуть три различных значения:

  • 0, если и б равны
  • целое число меньше 0, если a pr ecedes б
  • целое число больше 0, если б предшествует

Таким образом, мы можем просто вычесть значение б от . Если значение a превышает значение b, вычитание дает положительное целое число; если значение a равно значению b, оно дает 0; и если значение a составляет менее b, оно дает отрицательное значение.

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