[{
"SchoolId": "015-08-0034-009-37",
"SubjectId": "08-0034-00613",
"StudentId": "T-15981",
"StudentName": "John"
},{
"SchoolId": "015-08-0034-009-37",
"SubjectId": "08-0034-00613",
"StudentId": "T-15982",
"StudentName": "Paul"
}]
这是我的 php 页面在回显时json_encode响应,如果看起来像这样
Schoolid=015-08-0034-009-37
Subjectid=08-0034-00613
Studentid=T-15981
Studentname=John
Schoolid=015-08-0034-009-37
Subjectid=08-0034-00613
Studentid=T-15982
Studentname=Paul
我可以通过这样做得到这个结果
for (var i = 0; i < data.length; i++) {
console.log(data[i].schoolid);
console.log(data[i].subjectid);
console.log(data[i].studentid);
console.log(data[i].studentname);
}
我怎样才能使同一条目的值只生成一次,例如 school id
的值,并且subject id
只会显示一次唯一值(如 student id
和 student name
(将显示两次,因为它有两个不同的值。
我希望得到结果
Schoolid=015-08-0034-009-37
Subjectid=08-0034-00613
Studentid=T-15981
Studentname=John
Studentid=T-15982
Studentname=Paul
我应该在传递json_encode之前在 php 中或在收到 php json_encode后在 ajax 中
修复这个问题?if ($stmt - > rowCount() > 0) {
while ($selected_row = $stmt - > fetch(PDO::FETCH_ASSOC)) {
$basicinfo[] = array('schoolid' => $selected_row['schoolid'], 'subjectid' => $selected_row['subjectid'], 'studentid' => $selected_row['studentid'], 'studentname' => $selected_row['studentname']);
//$basicinfo1[] = array('schoolid' => $selected_row['schoolid'], 'subjectid' => $selected_row['subjectid']);
//$basicinfo2[] = array('studentid' => $selected_row['studentid'], 'studentname' => $selected_row['studentname']);
}
//$merge = array_merge($basicinfo1 , $basicinfo2);
//$add = $basicinfo1 + $basicinfo2)
//$input = array_map("unserialize", array_unique(array_map("serialize", $merge)));
$input = array_map("unserialize", array_unique(array_map("serialize", $basicinfo)));
echo json_encode($input, JSON_UNESCAPED_UNICODE);
}
以下代码将帮助您修复 PHP 中的数组
if ($stmt - > rowCount() > 0) {
//$new_data = array();
while ($v = $stmt - > fetch(PDO::FETCH_ASSOC)) {
$tmp_key = $v['SchoolId'].'-'.$v['SubjectId']; //adding a temp key
$new_data[$tmp_key]['SchoolId'] = $v['SchoolId'];
$new_data[$tmp_key]['SubjectId'] = $v['SubjectId'];
$sudky = (isset($new_data[$tmp_key]['Student'])) ? count($new_data[$tmp_key]['Student']) : 0; //getting the key for student child array
$new_data[$tmp_key]['Student'][$sudky]['StudentId'] = $v['StudentId'];
$new_data[$tmp_key]['Student'][$sudky]['StudentName'] = $v['StudentName'];
}
$new_data = array_values($new_data);
echo json_encode($new_data, JSON_UNESCAPED_UNICODE);
}
最终的 JSON 数据将如下所示
[{
"SchoolId":"015-08-0034-009-37",
"SubjectId":"08-0034-00613",
"Student":[
{"StudentId":"T-15981","StudentName":"John"},
{"StudentId":"T-15982","StudentName":"Paul"}
]
}]
在Javascript中,你必须在你拥有的for
循环中添加另一个循环,该循环遍历Student
数据
以下是Javascript部分
<script>
$(document).ready(function($){
$.ajax({
type: "post",
url: "YOURSCRIPT",
dataType: "json",
success: function(data){
if(data!=''){
for (var i = 0; i < data.length; i++) {
alert(data[i].SchoolId);
alert(data[i].SubjectId);
var student = data[i].Student;
for (var j = 0; j < student.length; j++) {
alert(student[j].StudentId);
alert(student[j].StudentName);
}
}
}
}
});
});
</script>