根据最高分数从阵列中查找前10条记录

Cor*_*nja 1 php arrays sorting json

我无法弄清楚如何根据使用php的最高分数计算从数组中获取前10个记录.我从表中取出记录,执行计算并将结果存储在数组名称分数中,并与查询字符串(Array)的其余部分相关联,这样我就可以将该计算带入JSON.我的问题是我只需要进行前10名得分最高的记录.

    $gold=$_GET['gold_input'];
    $silver=$_GET['silver_input'];
    $bronze=$_GET['bronze_input'];
    $gdp_value=$_GET['gdp_checked'];


    $link = new mysqli('localhost', 'root', '','coa123cdb');
    $myArray = array();

    $query = "SELECT  * FROM  coa123cdb.Country";

    $result = mysqli_query($link, $query)
    or die("Error: ".mysqli_error($link));

    $row_cnt = $result->num_rows;
    if ($result = $link->query($query)) {
    $tempArray = array();
    $score=array();

    $counter=0  ;
    while($row=mysqli_fetch_assoc($result)){

      $tempArray['country_name'] = $row['country_name'];
      $tempArray['gdp']=$row['gdp'];
      $tempArray['population']=$row['population'];
      $tempArray['gold']=$row['gold'];
      $tempArray['silver']=$row['silver'];
      $tempArray['bronze']=$row['bronze'];

                if($gdp_value==0)
            {
                        $score=($bronze*$tempArray['bronze'])+($silver*$tempArray['silver'])+($silver*$tempArray['gold']);

            }
            else
            {
            $score=($bronze*$tempArray[6]+$silver*$tempArray[5]+$silver*$tempArray[4])*$tempArray[1]/$tempArray[2]/10000;
            }
            $tempArray['score']=$score;
            $data[]=$tempArray;
            $counter++;
        }


       echo json_encode($data);
}

$result->close();
$link->close();
Run Code Online (Sandbox Code Playgroud)

请告知我需要做什么才能将数组中的前10条记录传递给JSON对象.

Igo*_* S. 5

首先,创建复杂的MySQL查询更好.

MySQL计算得分几乎是免费的,比较所有结果的返回和php中的计算成本.

我建议创建SQL查询+"按分数限制10".

SELECT  *,CASE gdp
WHEN 0 THEN bronze*silver
ELSE bronze*silver / 1000
END as score FROM coa123cdb.Country order by score desc limit 0,10
Run Code Online (Sandbox Code Playgroud)

此代码用于在得分计算类型之间切换

CASE gdp
WHEN 0 THEN bronze*silver
ELSE bronze*silver / 1000
END
Run Code Online (Sandbox Code Playgroud)