2 回答

TA貢獻1820條經驗 獲得超10個贊
我建議這樣的解決方案:
$idquestionCollect = ["34 1", "7 2", "29 3", "29 4", "28 5", "27 6", "27 7", "28 8", "28 9", "34 10", "34 11", "34 12", "34 13"];
$results = [];
foreach ($idquestionCollect as $separateID) {
[$one, $two] = explode(" ", $separateID);
$results[] = [
"id" => rtrim($two),
"result" => rtrim($one),
];
}
usort($results, function($el1, $el2){
return $el1['result'] > $el2['result'];
});
$listIDs = '"' . implode('","', array_column($results, 'id'));
$query = "SELECT * FROM articles where id in($listIDs)";
...

TA貢獻1833條經驗 獲得超4個贊
創建一個scores索引數組id,然后對其進行排序,然后提取鍵會更容易:
foreach ($idquestionCollect as $separateID) {
$parts = explode(" ", $separateID);
if ($parts[0] < 40) {
$listIDs[$parts[1]] = $parts[0];
}
}
asort($listIDs);
$listIDs = implode(',', array_keys($listIDs));
另一種娛樂方式:
preg_match_all('/(\d+) (\d+)/', implode('-', $idquestionCollect), $matches);
$listIDs = array_combine($matches[2], $matches[1]);
asort($listIDs);
$listIDs = implode(',', array_keys($listIDs));
對于您的數據,兩者都會產生:
2,3,1
- 2 回答
- 0 關注
- 132 瀏覽
添加回答
舉報