php数组到json的转换
大家好,我对编程很陌生,我的担心如下。 我有以下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
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结果,将所有内容推送到一个数组中,然后使用相同的值在新数组中循环创建该数组。