php数组到json的转换

php数组到json的转换,php,arrays,json,Php,Arrays,Json,大家好,我对编程很陌生,我的担心如下。 我有以下php代码,其中计算学生的平均值,并将结果填入关联数组。此数组稍后应转换为json格式 require_once("functions.inc"); // all my functions are here $conn = mysqli_connect(DBHOST,DBUSER,DBPASS,DB); // connects to my database if (!$conn) { error_log("Cannot connec

大家好,我对编程很陌生,我的担心如下。 我有以下php代码,其中计算学生的平均值,并将结果填入关联数组。此数组稍后应转换为json格式

    require_once("functions.inc"); // all my functions are here

   $conn = mysqli_connect(DBHOST,DBUSER,DBPASS,DB); // connects to my database
if (!$conn) {
error_log("Cannot connect to MySQL: " .$mysqli->connect_error);
return false;
}

         $query = "SELECT distinct exam.student_matricule from exam join student on exam.student_matricule=student.student_matricule where student.class_id=3"; //
          $result=mysqli_query($conn,$query);
           if(false===$result)
           {    
              printf("error: %s \n",mysqli_error($conn));
           }

           while($row= $result->fetch_assoc()) 
           {
            $studentmatricule = $row['student_matricule'];

            $average=student_average(3,$studentmatricule,1); // this function call calculates students' averages

            $stud_averages[$studentmatricule]=$average; //associative array that has **$studentmatricule** as key and **$average** as value

          }

           foreach($stud_averages as $student => $av)
           {
            $data=array('student_matricule'=>"$student",'average'=>"$av");
            print json_encode($data);
           }
我现在担心的是,打印json\u encode($data)打印

{“学生矩阵”:“17A002NA”,“平均值”:“12.52”}{“学生矩阵”:“17A001NA”,“平均值”:“10.53”}{“学生矩阵”:“17A003NA”,“平均值”:“12.69”

但我想要像这样的东西

[{“学生矩阵”:“17A002NA”,“平均值”:“12.52”},{“学生矩阵”:“17A001NA”,“平均值”:“10.53”},{“学生矩阵”:“17A003NA”,“平均值”:“12.69”}]

请问我该怎么办?
提前谢谢

您正在循环内部打印一维数组,因此它是作为JSON打印的

如果您想将其作为JSON数组,则需要将其存储在如下多维数组中

$data = [];
foreach($stud_averages as $student => $av)
{
   $data[]=array('student_matricule'=>"$student",'average'=>"$av");
}
print json_encode($data); // It prints JSON Array
$data = [];
$std = array();
foreach($stud_averages as $student => $av)
{
   $std['student_matricule']= "$student";
   $std['average'] ="$av";
}
 array_push($data,$std);
print json_encode($data); // It prints JSON Array

在foreach循环中分别打印每个数组。您需要在循环外部定义的数组中添加每个循环数据。您可以这样尝试:

$res = array();
foreach($stud_averages as $student => $av)
{
    $data=array('student_matricule'=>"$student",'average'=>"$av");
    array_push($res, $data);
}
print json_encode($res);

你也可以这样试试

$data = [];
foreach($stud_averages as $student => $av)
{
   $data[]=array('student_matricule'=>"$student",'average'=>"$av");
}
print json_encode($data); // It prints JSON Array
$data = [];
$std = array();
foreach($stud_averages as $student => $av)
{
   $std['student_matricule']= "$student";
   $std['average'] ="$av";
}
 array_push($data,$std);
print json_encode($data); // It prints JSON Array

这是相当低效的。首先循环db结果,将所有内容推送到一个数组中,然后使用相同的值在新数组中循环创建该数组。