php - 使用 array_multisort 对多维数组进行排序,其中您不知道数组的维度

标签 php sorting multidimensional-array

我有一个多维数组,它基本上由每年的一个子数组组成。因此,例如,如果我有三年的数据,它可能如下所示:

$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...
}

谁知道更好的方法吗?

最佳答案

您始终可以使用call_user_func_array ,指定 array_multisort 作为第一个参数并构建要传递给 array_multisort 的参数数组。像这样的东西:

$params = array();
foreach($data as $year){
  $params[] = $year;
}
call_user_func_array('array_multisort', $params);

关于php - 使用 array_multisort 对多维数组进行排序,其中您不知道数组的维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/907689/

相关文章:

php - MySQL 转义行中断导出为 CSV?

php - 在 JavaScript 中将字符串转换为数组

wordpress - woocommerce 在前端按库存和缺货对产品进行排序

javascript - 如何从下拉列表中对表格进行排序

php - PHP 函数之间传递数组

c - C 中链表的降序排序函数?

arrays - 创建随机二维数组 (4x4) FreePascal

arrays - 如何从多维数组计算一维索引?例如二维到一维 : y * xTot + x = i. 但更大

c - 这是一个有效的 Tic Tac Toe 获胜条件检查器功能吗?

php - 无效的数据源名称 - PDO