所以我觉得有一个简单的解决方案,但我的想法是空白的。
我有一系列ID,如下所示:
//array in no particular order
$arr1 = array(456, 5, 9, 2, 470, 3);
现在,这些是我的数据库中行的ID(主键)。我需要在保持该顺序的同时获取所有这些信息。我可以很好地查询数据库,并获得结果,但我无法弄清楚的是如何维护该顺序。所以结果是我希望能够迭代结果并按照这个特定的顺序吐出信息。
有没有办法告诉MYSQLI查询按此数组对ID进行排序?或者一旦我得到结果,有没有办法重新排序结果以反映给定数组中的顺序?
答案 0 :(得分:0)
使用此
SELECT * FROM table WHERE id IN (5,9,17,19,456) ORDER BY id ASC;
因此,您将获得与任何id
匹配的行,并对其进行排序ascending
。
答案 1 :(得分:0)
我设法解决了我的问题。
$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,一个只有另一个的信息。所以订单,最外面的循环,每次都会匹配。这允许我将整个DB结果放入一个数组,其顺序为my $ list array。