0

本の複数のエントリを含む配列があります。各 book 要素を、その一意の 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 に答える