我有一个大型多维数组,我想使用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行?
这是因为你的第一个多排序弄乱了$rows
的顺序。
一个虚拟数组应该做到这一点:$temp = $rows;