将此数组从最高到最低排序

所以我做了一个先验算法,这就是结果。

https://img1.sycdn.imooc.com/652b521b0001261b02100170.jpg

这是我从中获取该数组的代码。


$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++;

 }


潇潇雨雨
浏览 65回答 2
2回答

慕容森

使用arsort($array)功能。这就是你所需要的。

隔江千里

因此,为了对数组进行排序,我需要使用 usort,其中每个数组中的键名称应该相同。所以我将 $isi 变量更改为$isi = ["value"=>$confidence*$support,"key"=>$key];然后使用这个 usort 函数对数组进行排序usort($array,function($a,$b){&nbsp;return $a["value"] < $b["value"];})然后为了从数据库中获得 4 个最高的乘积,对代码进行轻微的更改&nbsp; $i = 0;&nbsp;foreach($array as $key => $value){&nbsp; &nbsp; if($i == 0){&nbsp; &nbsp; &nbsp;$product1 = product::find($value['key']);&nbsp; &nbsp; }&nbsp; &nbsp; else if($i == 1){&nbsp; &nbsp; &nbsp;$product2 = product::find($value['key']);&nbsp; &nbsp; }&nbsp; &nbsp; else if($i == 2){&nbsp; &nbsp; $product3 = product::find($value['key']);&nbsp; &nbsp; }&nbsp; &nbsp;else if($i == 3){&nbsp; &nbsp; $product4 = product::find($value['key']);&nbsp; &nbsp;}&nbsp; &nbsp;$i++;&nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP