0

mySqlはこれを出力します: ここに画像の説明を入力してください

ご覧のとおり、行3と4には重複があるため、Jsonを出力するときにこれらの重複をマージします。正確には、jsonを次のようにしたいと思います。

[
    {
        "name": "The Crane Bar",
        "lat": "53.2692",
        "lng": "-9.06151",
        "events": [
            {
                "name": "Traditional music session",
                "info": null
            }
        ]
    },
    {
        "name": "Taaffes Bar",
        "lat": "53.2725",
        "lng": "-9.05321",
        "events": [
            {
                "name": "6 Nations, Italy VS Ireland",
                "info": null
            }
        ]
    },
    {
        "name": "a house",
        "lat": "37.4401",
        "lng": "-122.143",
        "events": [
            {
                "name": "Party at Palo Alto",
                "info": "Some info about the party"
            },
            {
                "name": "2gdfgdf",
                "info": "2gdfgdfgdf"
            }
        ]
    }
]

あなたは1つのlocation_name、lat、lngを使用し、event_nameとpost_contentをネストしていることを知っています(ここでの情報として)。

ありがとう!

4

1 に答える 1

1

コメントに基づいて、結果をネストする必要があるため、JSONを生成するときに、行を反復処理して、PHPでネストされた結果リストを作成します。

$result = array();
$item = null;

for ($i = 0; $i < count($rows); ++$i) {
  $row = $rows[$i];

  if ($item === null) {
    $item = array('location' => $row['location'], 'events' => array());
  }

  $item['events'][] = array('name' => $row['event_name']);

  if ($i == count($rows) - 1 || $row['location'] != $rows[$i + 1]['location']) {
    $result[] = $item;
    $item = null;
  }
}

echo json_encode($result);  // JSON-encoded data

これで、各場所にevents1つ以上のエントリを含むリストが作成されます。

于 2012-11-04T18:06:35.900 に答える