使用 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;
我有一个大型多维数组,我想使用 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;