一、如果数据存储于 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>
结果: