0

我有一个包含多个书籍条目的数组。我将每个书籍元素都以其唯一的 id 作为其键存储在每个元素中。我正在努力从中生成正确的 JSON。

当我在数组上进行 json_encode 时,它​​只会生成每个子数组 json,而不是按键对元素进行分组,而是按它们所在的数组进行分组。

这是我的多维数组

$booksarray = array("book title" => array(), "book isbn" => array(), "book borrowedcount" => array());

我完全失去了如何从每个子数组中获取元素然后将它们组合在一起以便它们输出类似的东西,

{"results": 
 {"course": "CC120", "books": 
   { "book": 
     [{"id": "12345", "title": "javascript", "isbn": "123456789", "borrowedcount": "45"}] } }

我的 XML 输出如下

<results>
 <course>cc120</course>
  <books>
   <book id="9876" title="html" isbn="000001234" borrowedcount="56">
   <book id="12345" title="javascript" isbn="123456789" borrowedcount="45">
   <book id="222" title="php5" isbn="55555555" borrowedcount="22">
   <book id="23788" title="XML" isbn="99988877" borrowedcount="5">
  </books>
</results>

任何帮助将不胜感激

4

3 回答 3

2

将数组转换为所需的格式,然后json_encode()

$newArray = array();

foreach($booksarray["book title"] as $key => $title)
{
    $newArray[] = array(
        'id' => $key,
        'title' => $title,
        'isbn' => $booksarray["book isbn"][$key],
        'borrowedcount' => $booksarray["book borrowedcount"][$key]
    );
}

echo json_encode($newArray);
于 2013-02-26T17:07:49.110 回答
1

看起来您的数组不是您希望它首先采用的格式。一旦您的 php 数组与您希望 json 所在的结构相同, json_encode 就会起作用。

例如

$resultsArray = array(
    "results" => array(
        "course" => "CC120", 
        "books" => array(
            "book" => array(
                "id" => "12345", 
                "title" => "javascript"
                )
            )
        )
    );

$strJson = json_encode($resultsArray);
于 2013-02-26T17:05:41.260 回答
0

我认为问题可能出在您构建数组的方式上。你能改变它吗?

我建议一个数组结构如下:

$booksarray = array(
    "9876" => array(
         "title" => "html",
         "isbn" => "000001234", 
         "borrowedcount" => "56"
    ),
    "12345" => array(
         "title" => "javascript",
         "isbn" => "123456789", 
         "borrowedcount" => "45"
    )
);

json_encode() 然后应该以您想要的格式输出它。

例如

{"9876":{"title":"html","isbn":"000001234","borrowedcount":"56"},"12345":{"title":"javascript","isbn":"123456789","borrowedcount":"45"}}
于 2013-02-26T17:07:31.283 回答