12

我可以像这样创建简单的 json 对象:

$d = array('item' => "$name" ,'rate' => "$rating");

但是,如果我想构建一个项目数组并动态地执行它,因为我是从 db 查询构建它的呢?

更新:

让我更具体地说,我知道我必须这样做:

$jsonCode = json_encode($d);

这将创建一个带有 item 和 rate 字段的 json 对象。但是当我对它进行编码时,我想要一个 json 数组中的多个 json 对象。

我想要json明智的是这样的:

[{"item":"toy","rating":"baz" },{"item":"bike","rating":"2.3" }, {"item":"juice","rating":"1.3" }]
4

4 回答 4

26

但是当我对它进行编码时,我想要一个 json 数组中的多个 json 对象。

然后创建一个数组数组并将其传递给json_encode. 有关数组的文档在使用方括号语法创建/修改部分中解释了如何向数组添加元素。

关联数组,就像您已经拥有的一样,将被编码为对象,“普通”数组(具有连续数字键的数组)将被编码为数组。

例子:

$d = array();

// This appends a new element to $d, in this case the value is another array
$d[] = array('item' => "$name" ,'rate' => "$rating");

$json = json_encode($d);
于 2013-06-26T23:44:34.267 回答
9

这将从您的数据库查询创建一个多维数组,然后将其编码为 JSON。

$d = array();
while ($row = $stmt->fetch_assoc()) {
  $d[] = $row;
}
$json = json_encode($d);

每个$row都是从数据库返回的数据的关联数组。将其分配为将其$d[]添加为该容器数组的索引元素。

于 2013-06-26T23:44:59.973 回答
1

为什么不像刚才那样创建数组,然后将数组传递过去json_encode

如果你想要一个多维数组,试试

$array[] = array("key1" => value1, "key2" => value2);
于 2013-06-26T23:36:40.227 回答
1

您可以做的是根据需要动态创建一个 php 数组,然后将其转换为 json 数组,如下所示。

$json_array = json_encode($array);

请记住,您提供的不是 json 数组

于 2013-06-26T23:38:05.977 回答