我正在尝试使用 array_multisort() 对数组进行排序,但它似乎只对第一列进行排序。我希望它按 4 列排序。这是我的功能。
function array_sort_by_column(&$arr, $col, $col2, $col3, $col4, $dir = SORT_DESC) {
foreach ($arr as $key => $row) {
$sort_col[$key] = $row[$col];
$sort_col2[$key] = $row[$col2];
$sort_col3[$key] = $row[$col3];
$sort_col4[$key] = $row[$col4];
}
array_multisort($sort_col, $dir, $sort_col2, $dir, $sort_col3, $dir, $sort_col4, $dir, $arr);
}
这里的输入是一个二维数组,如 $arr,然后是我想要排序的列名,如 $col1、$col2、$col3 和 $col4。
编辑:对不起,我的意思是二维数组
样本:
$arr = array(
0 => array(
'group_id' => '1',
'points' => '5',
'rank' => '10',
'diff' => '1'
),
1 => array(
'group_id' => '1',
'points' => '1',
'rank' => '2',
'diff' => '4'
),
2 => array(
'group_id' => '2',
'points' => '1',
'rank' => '1',
'diff' => '2'
),
3 => array(
'group_id' => '2',
'points' => '9',
'rank' => '0',
'diff' => '-11'
),
);
array_sort_by_column($arr, 'group_id', 'points', 'rank', 'diff');