0

以下のヘルプが必要です。過去に発生したことは知っていますが、現在、エラーを把握するのに苦労しています

$score[$counter] = ($bronze * $tempArray[6]) + ($silver * $tempArray[5]) + ($silver * $tempArray[4]);

コード:

<?php
       //turning the date other way around that is why explode the date string and stored in an Array
    $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();
    //data format for information
//[{"name":"Ahmet Akdilek","country_name":"Turkey","gdp":"773091000000","population":"72752000"}
    $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();
    $scorex=array($row_cnt);
    $score=(object)$scorex;
    $counter=0  ;
    //while($row = $result->fetch_object()) {
    while($row=mysqli_fetch_object($result)){

      $tempArray = $row;
                if($gdp_value==0)
            {
            $score[$counter]=($bronze*$tempArray[6])+($silver*$tempArray[5])+($silver*$tempArray[4]);
            }
            else
            {$score[$counter]=($bronze*$tempArray[6]+$silver*$tempArray[5]+$silver*$tempArray[4])*$tempArray[1]/$tempArray[2]/10000;
            }
            array_push($tempArray, $score[$counter]);
            array_push($myArray, $tempArray);
                            $counter=$counter+1;
        }



        //var_dump($score);
    echo json_encode($myArray);
    }

    $result->close();
    $link->close();

  ?>
4

2 に答える 2

2

mysqli_fetch_objectオブジェクトを返します。

したがって、行の後は$row=mysqli_fetch_object($result)オブジェクトです。

配列が必要な場合は、mysqli_fetch_array代わりに使用してください。

そして、その配列を使用する前に、その内容を確認してくださいvar_dump($row);(さらなる質問を防ぐため)。

于 2013-05-15T01:34:03.613 に答える
1

宣言した方法を見てください$score

最初にあなたがし$scorex=array($row_cnt);、次に$score=(object)$scorex;.

オブジェクト$scoreにキャストされます。ただし、コードでは、配列のようにアドレス指定しています$score[$counter]。オブジェクトとして参照する必要があります。

編集

または、 の定義を$score次のように更新します。

 $score = array_fill (0, $row_cnt, 0);

このように、への割り当て$score[$counter]は引き続き機能します(意図したとおりだと思います)。

于 2013-05-15T01:34:53.307 に答える