PHP 技巧(007)* 指定数据排在前面(置顶功能)

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

结果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章