将mysql select结果转换为json(数组数组)

时间:2014-12-10 17:36:20

标签: php mysql arrays json multidimensional-array

我需要将表内容编码为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);

}

4 个答案:

答案 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);

?>