PHP で連想配列をソートするのに助けが必要です。
並べ替えは配列キーの「名前」に依存し、キーと値のペアを保持する必要があります。次のソート順: 1) 最初の整数ASC、2) 2 番目の整数ASC、3) 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;
}
});
もっとエレガントな方法があると確信していますが、入力として役立つかもしれません。