次のコードを最適化するための良いアイデアを誰かが持っているかどうか疑問に思います。次のような多次元配列($ 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レコードのループで実行されているため、改善を歓迎します。