簡體   English   中英

將此數組從高到低排序

[英]sort this array from highest to lowest

所以我做了一個先驗算法,這就是結果。

陣列圖片

這是我從中獲取此數組的代碼。

$count = array_count_values($arrayCount);

$array = [];

foreach($count as $key => $value){
    $confidence = ($value/$count_antecedent);
    $support = ($value/$count_all_transactions);
   
    $isi = [
        $key=>$confidence*$support
    ];
    array_push($array,$isi);
}



return $array;

我想從高到低對它進行排序,但也要保留密鑰。

如果這個數組是排序的,我只需要取 4 個最高的數字。

它看起來像這樣(如果已排序):

  $i = 0;
 foreach($sortedArray as $key => $value){
    if($i == 0){
     $product1 == product::find($key);
    }
    else if($i == 1){
     $product2 = product::find($key);
    }
    else if($i == 2){
    $product3 = product::find($key);
    }
   else if($i == 3){
    $product4 = product::find($key);
   }
   $i++;
 }

使用arsort($array) function。

這就是你所需要的。

因此,為了對數組進行排序,我需要使用 usort,其中每個數組中的鍵名都應該相同。

所以我將 $isi 變量更改為

$isi = ["value"=>$confidence*$support,"key"=>$key];

然后使用這個 usort function 來訂購陣列

usort($array,function($a,$b){
 return $a["value"] < $b["value"];
})

然后從 db 獲得 4 個最高產品,稍微更改代碼

  $i = 0;
 foreach($array as $key => $value){
    if($i == 0){
     $product1 = product::find($value['key']);
    }
    else if($i == 1){
     $product2 = product::find($value['key']);
    }
    else if($i == 2){
    $product3 = product::find($value['key']);
    }
   else if($i == 3){
    $product4 = product::find($value['key']);
   }
   $i++;
 }

暫無
暫無

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

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