我有一个多维数组,每年基本上由一个子数组组成。因此,例如,如果我有三年的数据,它可能看起来像这样:
$data[0] = Array(0,1,2,3,4,5,6,7);
$data[1] = Array(6,5,4,3,6,7,8,9);
$data[2] = Array(1,4,2,5,7,3,1,4);
现在我希望能够在多年的基础上对这些数组进行排序。例如,我可能希望根据第二年进行排序,在这种情况下,它们都将根据$ data [1]的重新排序进行排序。
我可以使用array_multisort轻松完成此操作:
array_multisort($data[1],SORT_ASC,$data[0],$data[2]);
没关系,但我不知道会有多少年的数据。我想要一些方法来指定恰当数量的参数,但我不知道如何在php中这样做,除非我只需要为每个可能的年数都有一个if语句,这看起来非常痛苦:
if ($num_years == 1)
{
array_multisort($data[$which_year],SORT_ASC);
}
else if ($num_years == 2)
{
array_multisort($data[$which_year],SORT_ASC,$data[0],$data[1]); // this does work, interestingly, in spite of the repetition...
}
有人知道更好的方法吗?
答案 0 :(得分:5)
您始终可以使用call_user_func_array,指定array_multisort
作为第一个参数,并构建要传递给array_multisort的参数数组。类似的东西:
$params = array();
foreach($data as $year){
$params[] = $year;
}
call_user_func_array('array_multisort', $params);