Используйте usort
и предоставьте свою собственную функцию, чтобы сделать упорядочивание, например,
function cmp($a, $b)
{
return $b['avgSearchVolume'] - $a['avgSearchVolume'];
}
usort($array, "cmp");
До PHP 5.3 это - лучшая функция для сортировки на основе подразделов, не делая новую функцию для каждого ключа.
function sortBySubkey(&$array, $subkey, $sortType = SORT_ASC) {
foreach ($array as $subarray) {
$keys[] = $subarray[$subkey];
}
array_multisort($keys, $sortType, $array);
}
sortBySubkey($arr, 'avgSearchVolume');
С PHP 5.3 можно сделать что-то вроде этого, тот же вызов функции как теперь.
function getSortVariable($sortType = SORT_ASC) {
switch($sortType) {
case SORT_ASC:
return function ($a, $b) use ($subkey) { return strcmp($a[$subkey], $b[$subkey]); };
}
}
function sortBySubkey(&$array, $subkey, $sortType = SORT_ASC) {
$sortFunction = getSortVariable($sortType);
usort($array, $sortFunction($subkey));
}
Необходимо будет использовать пользовательскую функцию обратного вызова вместе с usort()
.
function cmp($a, $b)
{
if ($a['avgSearchVolume'] == $b['avgSearchVolume']) {
return 0;
}
return ($a['avgSearchVolume'] > $b['avgSearchVolume']) ? -1 : 1;
}
usort($array, 'cmp');