[英]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.