簡體   English   中英

根據數組順序查詢數據庫/根據另一個數組的值對數組進行排序

[英]Query DB based off array order / sort array based off another array's values

因此,我覺得有一個簡單的解決方案,但我的想法空白。

我有一組ID,如下所示:

//array in no particular order    
$arr1 = array(456, 5, 9, 2, 470, 3);

現在,這些是我數據庫中行的ID(主鍵)。 我需要獲取所有這些信息,同時保持該順序。 我可以很好地查詢數據庫,並獲得結果,但是我不知道如何維護該順序。 所以結果是我希望能夠遍歷結果並按此特定順序吐出信息。

有沒有辦法告訴MYSQLI查詢通過該數組對ID進行排序? 或一旦獲得結果,是否有辦法重新排序結果以反映給定數組中的順序?

用這個

SELECT * FROM table WHERE id IN (5,9,17,19,456) ORDER BY id ASC;

因此,您將獲得與任何id匹配的行並將其ascending排列。

我設法解決了我的問題。

$unorderedArray = array();
$orderedArray = array();
while($a = mysqli_fetch_assoc($r)) {
    array_push($unorderedArray, $a);
}
for($i = 0; $i < sizeof($list); $i++) {
    for($ii = 0; $ii < sizeof($unorderedArray); $ii++) {
        if($list[$i] == $unorderedArray[$ii]['id']) {
            array_push($orderedArray, $unorderedArray[$ii]);
        }
    }
}

因此,首先,我從數據庫中獲取結果,並使用它創建一個多維數組,以使其更易於使用。 然后,我遍歷第一個數組,這是我想要的順序,並遍歷結果數組。 當有匹配項時,我將其推入新構造的數組中。

之所以保留順序,是因為該數組具有相同的ID,一個數組具有比另一個數組更多的信息。 因此,順序(最外層的循環)每次都會匹配。 這使我可以將整個數據庫結果按我的$ list數組的順序放置在一個數組中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM