我目前正在使用JSON编码数组来显示数据库中的用户以获取自动建议功能。
它看起来像这样:
$sth = mysql_query("SELECT id, name FROM users");
$json = array();
while($row = mysql_fetch_assoc($sth)) {
$json['name'] = $row['name'];
$json['id'] = $row['id'];
$data[] = $json;
}
print json_encode($data);
返回:
[{"id":"81","name":"John Doe"},{"id":"82","name":"Jane Doe"}]
我的问题有点双重:
首先,如何在此输出中手动添加其他对象?例如,假设我想添加:{"id":"444","name":"A New Name"}
因此,它看起来像:
[{"id":"81","name":"John Doe"},{"id":"82","name":"Jane Doe"},{"id":"444","name":"A New Name"}]
第二次,假设我也想从单独的表中向数组中添加更多对象,例如:
$sth = mysql_query("SELECT id, title FROM another_table");
$json = array();
while($row = mysql_fetch_assoc($sth)) {
$json['name'] = $row['title'];
$json['id'] = $row['id'];
$data[] = $json;
}
print json_encode($data);
这样我可以在JSON数组中填充两个表,因此,在我的autosuggest中显示为其他选项。
希望这是有道理的,因为我已经尽力阐明我想要完成的事情。
谢谢!
答案 0 :(得分:13)
继续推送到$data
数组。
$json = array();
while($row = mysql_fetch_assoc($sth)) {
$json['name'] = $row['name'];
$json['id'] = $row['id'];
$data[] = $json;
}
$custom = array('name'=>'foo', 'id' => 'bar');
$data[] = $custom;
然后在最后,做你的json_encode
。假设你没有提到在JS本身中将它与多个ajax调用合并。
如果您有单独的脚本,请将它们合并到一个php页面中。
答案 1 :(得分:4)
尝试这种方式: -
$temp = json_encode($json); //$json={"var1":"value1","var2":"value2"}
$temp=substr($temp,0,-1);
$temp.=',"variable":"'.$value.'"}';
答案 2 :(得分:1)
您可以编辑JSON(文本),但在编码之前修改数组要容易得多。 或者我错过了什么?
答案 3 :(得分:0)
我不是这些领域的专家,但我会试着看看能否提供帮助。尝试其中之一:
选项1(我不知道联盟在mysql中的工作方式):
$sth = mysql_query("SELECT id, name FROM users union SELECT id, name FROM (SELECT id, title as name from another_table) as T2");
$json = array();
while($row = mysql_fetch_assoc($sth)) {
$json['name'] = $row['name'];
$json['id'] = $row['id'];
}
$json['name'] = 'A new name';
$json['id'] = '444';
$data[] = $json;
print json_encode($data);
我从未做过PHP,所以我在做假设。我也从未使用过MySql,因此有更多的假设。
选项2:
$sth = mysql_query("SELECT id, name FROM users");
$json = array();
while($row = mysql_fetch_assoc($sth)) {
$json['name'] = $row['name'];
$json['id'] = $row['id'];
}
$sth = mysql_query("SELECT id, title from another_table");
while($row = mysql_fetch_assoc($sth)) {
$json['name'] = $row['title'];
$json['id'] = $row['id'];
}
$json['name'] = 'A new name';
$json['id'] = '444';
$data[] = $json;
print json_encode($data);
希望这有帮助。