亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據字符串的一部分對 foreach 結果進行排序 - PHP

根據字符串的一部分對 foreach 結果進行排序 - PHP

PHP
慕妹3242003 2023-06-24 15:36:13
我使用 foreach 循環遍歷數組,并將字符串分成兩部分。第一部分是分數,第二部分是 ID。就像在本例中一樣"34 1",34 是分數,1 是 ID,用空格分隔。然后我將 ID 放入列表中并在 MySQL 查詢中使用它。問題在于它根據初始數組中接收結果的方式對結果進行排序。我想要實現的目標是按每個 id 的分數對其進行排序在下面的示例中,"34 1","7 2","29 3"它會將其排序為1,2,3. 但我需要它是2,3,1<?php$idquestionCollect = ["34 1", "7 2", "29 3"];foreach ($idquestionCollect as $separateID) {    [$one, $two] = explode(" ", $separateID);    if ($one < 40) {        $listID.= $two . "-";    }}$listIDs = '"' . implode('","', explode('-', $listID)) . '"';$listIDs = rtrim($listIDs, ',');$query = "SELECT * FROM articles where id in($listIDs)";$result = mysqli_query($connect, $query);while ($row = mysqli_fetch_assoc($result)) {    echo $row['Respond'];}我在想,也許有一種方法可以在$idquestionCollect將其發送到 foreach 之前實際重新排列,或者也許有一種方法可以在 foreach 內部執行此操作?
查看完整描述

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)";

...


查看完整回答
反對 回復 2023-06-24
?
瀟瀟雨雨

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


查看完整回答
反對 回復 2023-06-24
  • 2 回答
  • 0 關注
  • 132 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號