function getForum($class_divisionId) {
$qry = "SELECT fm.uid,fm.class_divisionId,fm.username,fm.description,fm.date_time,si.name FROM forum as fm INNER JOIN studentinfo as si ON fm.username = si.username WHERE fm.class_divisionId='".mysql_real_escape_string($class_divisionId)."'";
$exe = mysql_query($qry);
if (mysql_num_rows($exe)> 0) {
$response['error'] = 'false';
while($result = mysql_fetch_array($exe)){
$uid = $result['uid'];
$response['forum'][$uid]['uid'] = $result['uid'];
$response['forum'][$uid]['class_divisionId'] = $result['class_divisionId'];
$response['forum'][$uid]['username'] = $result['username'];
$response['forum'][$uid]['description'] = $result['description'];
$response['forum'][$uid]['date_time'] = $result['date_time'];
$response['forum'][$uid]['name'] = $result['name'];
}
return $response;
} else {
return false;
}
}
这是我的php文件中的getforum函数。我得到的回应是:
{
"error": "false",
"forum": {
"4": {
"uid": "4",
"class_divisionId": "ABC",
"username": "XYZ_1",
"description": "Forum description number 2",
"date_time": "2015-08-15 10:17:18",
"name": "XYZ"
}
}
}
我希望回复采用以下格式:
{
"error": "false",
"forum": [
{
"uid": "4",
"class_divisionId": "ABC",
"username": "XYZ_1",
"description": "Forum description number 2",
"date_time": "2015-08-15 10:17:18",
"name": "XYZ"
}
]
}
有人可以告诉我我做错了吗?
答案 0 :(得分:0)
使用
$response['forum'][$uid]->'uid' = $result['uid'];
$response['forum'][$uid]->'class_divisionId' = $result['class_divisionId'];
这使得论坛值具有由uid值表示的数组,您可以为其设置每个条目的数据。
答案 1 :(得分:0)
这是不可能的。 Javascript数组必须具有顺序键数字,因为[...]
语法不允许您指定键。由于您使用的是ID号,几乎可以肯定不是顺序的或没有间隙的,因此必须将“数组”编码为对象。
e.g。
$foo = array(0 => 'a', 3 => 'b'); // missing keys 1 & 2
echo json_encode($foo); // {"0":"a","3":"b"}
$bar = array('a', 'b'); // implicit keys 0,1
echo json_encode($bar); // ["a","b"]
$baz = array(0 => 'a', 1 => 'b') // explicit keys 0,1
echo json_encode($baz); // ["a","b"]
至于原因:由于数组[]
- 快捷符号不能指定键,json编码引擎将被强制直接指定EVERY SINGLE缺失键,因此请考虑退化情况:
$foo = array(0 => 'a', 999999999 => 'b');
JSON绝对是MASSIVE,有999,999,998份x:null
,只是为了“填空”。
答案 2 :(得分:0)
这是因为您没有添加为数组元素,而是将其添加为带键的assoc-array元素,
这将有您发布的输出
Could not read a WAV header from a stream of 0 bytes