值您可以使用php prepare语句传递它们。举个例子,我该如何引用usort中的元素分数,因为它通常采用数组的名称?我应该在循环内部还是在循环外部进行排序?usort()接受两个参数。第二个是字符串,这是比较函数名(cmp,在手册示例中)。您需要声明此

值您可以使用php prepare语句传递它们。举个例子,我该如何引用usort中的元素分数,因为它通常采用数组的名称?我应该在循环内部还是在循环外部进行排序?usort()接受两个参数。第二个是字符串,这是比较函数名(cmp,在手册示例中)。您需要声明此,php,arrays,json,sorting,Php,Arrays,Json,Sorting,值您可以使用php prepare语句传递它们。举个例子,我该如何引用usort中的元素分数,因为它通常采用数组的名称?我应该在循环内部还是在循环外部进行排序?usort()接受两个参数。第二个是字符串,这是比较函数名(cmp,在手册示例中)。您需要声明此函数,它接受两个参数,这两个参数是将要进行比较的数组单元格--您在这个cmp函数(或您命名的任何函数)中比较“score”,而不是在usort本身中!你不会比较$a>$b而是$a[“score”]>$b[“score”]@ShoaibSulem


值您可以使用php prepare语句传递它们。举个例子,我该如何引用usort中的元素分数,因为它通常采用数组的名称?我应该在循环内部还是在循环外部进行排序?
usort()
接受两个参数。第二个是字符串,这是比较函数名(
cmp
,在手册示例中)。您需要声明此函数,它接受两个参数,这两个参数是将要进行比较的数组单元格--您在这个
cmp
函数(或您命名的任何函数)中比较“score”,而不是在
usort
本身中!你不会比较
$a>$b
而是
$a[“score”]>$b[“score”]
@ShoaibSuleman请看一下-,这对许多标准进行排序,你只需要一个,但你会意识到应该如何考虑数组键。我如何在usort中引用元素分数,因为它通常采用数组的名称?我应该在循环内部还是在循环外部进行排序?
usort()
接受两个参数。第二个是字符串,这是比较函数名(
cmp
,在手册示例中)。您需要声明此函数,它接受两个参数,这两个参数是将要进行比较的数组单元格--您在这个
cmp
函数(或您命名的任何函数)中比较“score”,而不是在
usort
本身中!您不会比较
$a>$b
而是
$a[“score”]>$b[“score”]
@ShoaibSuleman请看一看--这在许多标准上排序,您只需要一个,但您会意识到数组键应该如何考虑。我认为第一个
foreach
中有一些错误。您正在为相同的
$score
变量分配不同的值。我认为应该使用
$score[]=…
。我首先使用usort根据分数对数组进行排序,然后翻转数组以获得前10个分数元素…对我来说很有用,因此感谢您的所有回答。我认为每个
的第一个
部分有问题。您正在为相同的
$score
变量分配不同的值。我认为应该使用
$score[]=…
。我首先使用usort根据分数对数组进行排序,然后翻转数组以获得前10个分数元素…对我很有用,因此感谢您的所有帮助answers@Shoaib苏勒曼:我想知道为什么我的答案被“拒绝”。如果需求发生了变化,那么最好更新您的问题或发布一个新的问题(如果新的需求需要不同的解决方案)。@Shoaib Suleman:我想知道为什么我的回答“不被接受”。如果需求发生了变化,那么最好更新您的问题或发布新问题(如果新需求需要不同的解决方案)。
    $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();
CASE gdp
WHEN 0 THEN bronze*silver
ELSE bronze*silver / 1000
END
  ---- your code above it ---

        $tempArray['score']=$score;
        $data[]=$tempArray;
        foreach($data as $value)
        {
           $score[]  = $value['score']
        }
        array_multisort($score, SORT_DESC,$data);

        $i = 0;
        $newArray = array();
        foreach($data as $value)
        {
            if($i < 10)
            {
                $newArray[] = $value;
            }
            $i++;
        }  


  --- code below----------  
/* Initialize variables */
$gold      = $_GET["gold_input"];
$silver    = $_GET["silver_input"];
$bronze    = $_GET["bronze_input"];
$gdp_value = $_GET["gdp_checked"];
$data = array();

/* Construct the query based on user input.
   The query should calculate the 'score' (taking '$gdp_value' into account)
   and then return the 10 highest scoring entries.
   The returned columns include all columns present in the 'Country' table
   plus an extra column named 'score' (which contains the calculated score).*/
$scoreFormula = ($gdp_value == 0)
        ? "((" . $bronze . " * bronze) + (" . $silver . " * silver) + (" . $gold . " * gold))";
        : "(((" . $bronze . " * bronze) + (" . $silver . " * silver) + (" . $gold . " * gold)) * (gdp / (population * 10000)))";
$query = "SELECT Country.*, " . $scoreFormula . " AS score
            FROM Country
            ORBER BY score DESC
            LIMIT 10";

/* Connect to the DB and execute the query */
$link = new mysqli("localhost", "root", "", "coa123cdb");
$result = mysqli_query($link, $query)
    or die("Error: " . mysqli_error($link));

/* Put the results into the '$data' array */
$row_cnt = $result->num_rows;
forEach ($row = mysqli_fetch_assoc($result)) {
    $data[] = $row;
}

/* Release resources */
$result->close();
$link->close();

/* Return the data */
echo(json_encode($data));