使用 php array_multisort 两次对同一个数组进行排序

Using php array_multisort twice to sort the same array

我有一个大型多维数组,我想使用 array_multisort 按日期对它进行两次排序,并从每次排序中获取最后 3 个数组

我可以创建数组的副本,但当我只想要其中的 3 个数组时,这似乎是一种浪费

$rows = array(
    array(...),
    array(...),
    ...
);

我创建要排序的数组是这样的

foreach($rows as $key => $row) {
    $submit_date[$key] = $row['Submit_Date'];
    $view_date[$key] = $row['View_Date'];
}

在这种迭代中,一切都如我所料

array_multisort($view_date, SORT_DESC, $rows);
$viewed = array_slice(array_unique($rows, SORT_REGULAR), 0, 3, true);

但是在 运行 之后的这一个上,我得到的结果与我预期的不同

array_multisort($submit_date, SORT_DESC, $rows);
$unlisted = array_slice(array_unique($rows, SORT_REGULAR), 0, 3, true);

我无法对两个排序数组进行排序,因为在某些情况下 $view_date 数组会有空值。

有没有一种方法可以使用同一个数组按查看日期排序,获取最后 3 行,然后按提交日期对数组排序,然后获取最后 3 行?

这是因为你的第一个 multisort 弄乱了 $rows 的顺序。
虚拟数组应该可以解决问题:$temp = $rows;