我需要帮助使用 PHP 对关联数组进行排序。
排序应依赖于数组键“名称”,并保留键/值对。以下排序顺序: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;
}
});
我敢肯定,有一种更优雅的方式,但可以作为输入。