Мне нужна помощь в сортировке ассоциативного массива с PHP.PHP sort array с тремя переменными
Сортировка должна основываться на имени массива «имя» и содержать пары ключ/значение. После того, сортировка: 1) первый целое число ASC, 2) второй целое ASC, 3) третий смешанный ASC
вход
array(6) {
[0]=>
array(2) {
["name"]=>
string(13) "60 to 90 in 6"
["timing"]=>
float(4.7)
}
[1]=>
array(2) {
["name"]=>
string(15) "40 to 120 in KD"
["timing"]=>
float(3.3)
}
[2]=>
array(2) {
["name"]=>
string(14) "60 to 100 in 4"
["timing"]=>
float(1.5)
}
[3]=>
array(2) {
["name"]=>
string(13) "60 to 90 in 4"
["timing"]=>
float(2.4)
}
[4]=>
array(2) {
["name"]=>
string(15) "140 to 160 in 6"
["timing"]=>
float(2.4)
}
[5]=>
array(2) {
["name"]=>
string(13) "60 to 90 in KD"
["timing"]=>
float(5.7)
}
}
порядок вывода
1, 3, 0, 5, 2, 4
Большое спасибо за помощь.
Ответ:
uasort($acceleration, function($a, $b) {
if($a['_sort'][0] == $b['_sort'][0] AND $a['_sort'][2] == $b['_sort'][2])
{
if($a['_sort'][4] < $b['_sort'][4])
return -1;
elseif($a['_sort'][4] > $b['_sort'][4])
return 1;
else
return 0;
}
elseif($a['_sort'][0] == $b['_sort'][0])
{
if($a['_sort'][2] < $b['_sort'][2])
return -1;
elseif($a['_sort'][2] > $b['_sort'][2])
return 1;
return 0;
}
else
{
if($a['_sort'][0] < $b['_sort'][0])
return -1;
elseif($a['_sort'][0] > $b['_sort'][0])
return 1;
else
return 0;
}
});
Я уверен, что есть более элегантный способ, но может служить в качестве входных данных.
Где мой код? Что вы сделали до сих пор? Мы можем попытаться помочь вам с вашим кодом, но мы не можем написать его для вас. – Uby