Сортировка массива с неизвестными ключами и сохранение индекса ассоциации в php
У меня есть массив со значениями статистики, взятой из 2 казней и их разницей. название статистики является ключевым, и оно мне неизвестно. Я хочу поддерживать связь индекса
это так
$array["statistic_name_1"][0] = 5
$array["statistic_name_1"][1] = 4
$array["statistic_name_1"][2] = 1
$array["statistic_name_2"][0] = 10
$array["statistic_name_2"][1] = 4
$array["statistic_name_2"][2] = 6
$array["statistic_name_3"][0] = 15
$array["statistic_name_3"][1] = 10
$array["statistic_name_3"][2] = 5
...
и я хочу отсортировать по убыванию чисел в соответствии с разницей выполнения (который является [ключ][2])
Я попытался Asort, но я не могу найти способ, чтобы сказать, чтобы сортировать по разнице
2 ответа
Решение
Попробуйте что-то вроде этого:
function cmp($a, $b)
{
return $b[2] - $a[2]
}
uasort($array, "cmp");
http://www.php.net/manual/en/function.uasort.php
Чтобы поместить все это в одну строку, вы можете сделать:
uasort($array, function($a, $b){ return $b[2] - $a[2] });
Использование uasort
поддерживать связь ключей
uasort($array,function ($a,$b){
if ($a[2] == $b[2]) {
return 0;
}
return ($a[2] > $b[2]) ? -1 : 1;
});