【发布时间】:2011-08-17 16:32:21
【问题描述】:
我想知道是否有人对优化以下代码有任何好的想法。我有一个多维数组($List)如下:
Array
(
[0] => Array
(
[id] => 1
[title] => A good read
[priority] => 10
)
[1] => Array
(
[id] => 2
[title] => A bad read
[priority] => 20
)
[2] => Array
(
[id] => 3
[title] => A good read
[priority] => 10
)
)
首先,我将删除所有具有相同标题的条目(无论其他值是什么),如下所示:
$List_new = array();
foreach ($List as $val) {
$List_new[$val['title']] = $val;
}
$List = array_values($List_new);
完美。然后我对数组进行重新排序,首先是优先级字段,然后是 id:
$sort_id = array();
$sort_priority = array();
foreach ($List as $key => $row) {
$sort_id[$key] = $row['id'];
$sort_priority[$key] = $row['priority'];
}
array_multisort($sort_priority, SORT_DESC, $sort_id, SORT_DESC, $List);
两个代码块都出现在一个循环中,因此在重新排序之前清除了 $sort_id 和 $sort_priority。
有没有更好的方法来做到这一点 - 即使用排序过程删除重复的标题条目?此代码块在多达 500,000 条记录的循环中执行,因此欢迎任何改进!
【问题讨论】:
标签: php optimization multidimensional-array array-multisort