一、如果數據存儲於 MySQL 數據庫
方法1. 直接使用 ORDER BY 實現 :
SELECT * FROM `infos` ORDER BY id IN (4,5) DESC;
方式2. 通過 UNION 聯合查詢實現
SELECT * FROM `infos` WHERE id in (4,5)
UNION
SELECT * FROM `infos` WHERE id not in (4,5)
結果:
二、如果數據存儲於普通數組中
<?php
# 測試數據
$top_ids = [4, 5];
$infos = [
["id" => 1, "info" => "..."],
["id" => 2, "info" => "..."],
["id" => 3, "info" => "..."],
["id" => 4, "info" => "..."],
["id" => 5, "info" => "..."],
["id" => 6, "info" => "..."],
["id" => 7, "info" => "..."],
["id" => 8, "info" => "..."],
["id" => 9, "info" => "..."],
];
# 實現
$top_infos = [];
foreach ($top_ids as $k => $v) {
foreach ($infos as $kk => $vv) {
# code...
if ($v == $vv["id"]) {
$top_infos[] = $vv;
unset($infos[$kk]);
}
}
}
$rs = array_merge($top_infos, $infos);
?>
<script type="text/javascript">
console.log("置頂ids:",<?php echo json_encode($top_ids); ?>)
console.log("原數據:",<?php echo json_encode($infos); ?>)
console.log("置頂後:",<?php echo json_encode($rs); ?>)
</script>
結果: