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>

結果:

 

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