我需要将表内容编码为JSON,以便将其插入到文件中。
输出必须如下:
{
"name1":[{"id":"11","name":"name1","k1":"foo","k2":"bar"}],
"name2":[{"id":"12","name":"name2","k1":"foo","k2":"bar"}],
}
确实,每个JSON" line"对应于mysql行的内容,每个JSON数组的名称是' name'的名称。柱。
我目前唯一可以管理的是:
$return_arr = array();
$sql = "SELECT * FROM bo_appart";
$result = mysql_query($sql) or die(mysql_error());
$index = 0;
while ($row = mysql_fetch_assoc($result)) {
$return_arr[$index] = $row;
$index++;
}
echo json_encode($return_arr);
这是我得到的输出:
[
{"id":"11","name":"name1","k1":"foo","k2":"bar"},
{"id":"12","name":"name2","k1":"foo","k2":"bar"},
]
非常感谢!!!
已更新
工作代码:
$return_arr = array();
$sql = "SELECT * FROM bo_appart";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
$return_arr[ $row['nom_appart'] ][] = $row;
}
echo json_encode($return_arr);
}
答案 0 :(得分:2)
你很亲密。我注意到你希望最终输出是一个对象而不是一个数组,因为外括号是{}而不是[]。因此,您需要一个不同的对象类型,并且需要使用每一行的名称作为存储该行的键。
$return_obj = new stdClass();
$sql = "SELECT * FROM bo_appart";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
$name = $row['name'];
$return_obj->$name = [$row]; // for PHP < 5.4 use array($row)
}
echo json_encode($return_obj);
答案 1 :(得分:1)
此循环足以创建所需的JSON:
$return_arr = array();
while ($row = mysql_fetch_assoc($result)) {
$return_arr[$row['name']][] = $row; #or $return_arr[$row['name']] = [$row];
}
echo json_encode($return_arr);
答案 2 :(得分:0)
我花了很多时间来制作mash / mysql-json-serializer包。
https://github.com/AndreyMashukov/mysql-json-serializer
您可以选择json_objects的Json_array等。它支持ManyToMany,oneToMany,manyToOne关系
var anchor_counter = jQuery('#counter_anchor').offset().top;
答案 3 :(得分:-2)
<?php
$sql = "SELECT * FROM bo_appart";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
$return_arr[] = $row;
}
echo json_encode($return_arr);
?>