こんにちは、php と mysql を使用して、非常に特殊な形式の json オブジェクトを作成する方法を見つけようとしています。
私のmysqlテーブルは次のようになります(最もきれいではありませんが、私は知っています):
CREATE TABLE IF NOT EXISTS `room120` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`timestamp_start` datetime NOT NULL,
`timestamp_end` datetime NOT NULL,
`month` int(2) NOT NULL,
`day` int(2) NOT NULL,
`year` int(4) NOT NULL,
`name` text NOT NULL,
`email` text NOT NULL,
`phone` text NOT NULL,
`title` text NOT NULL,
`start` varchar(5) NOT NULL,
`end` varchar(5) NOT NULL,
`approved` enum('true','false','new') NOT NULL DEFAULT 'new',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
JSON オブジェクトをどのように表示する必要があるか:
[
"10-23-2013": {
0: {
id : 1,
title : "Hello World",
time : "8:00 am - 10:00 am"
},
1: {
id : 2,
title : "Hello Universe",
time : "1:00 pm - 3:00 pm"
}
}
]
ID とタイトルの部分を構築する現在の php ループがありますが、日付のある部分の構築に問題があります。
これが私のphpループです(はい、日付部分を構築するためのコードがないことはわかっています。それを理解しようとしています。):
$return_arr = array();
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
$date = str_pad($row[month], 2, "0", STR_PAD_LEFT).'-'.str_pad($row[day], 2, "0", STR_PAD_LEFT).'-'.$row[year];
$start_time = DATE("g:i a", STRTOTIME($row[start]));
$end_time = DATE("g:i a", STRTOTIME($row[end]));
$row_array[id] = $row[id];
$row_array[title] = $row[title];
array_push($return_arr, $row_array);
}
echo json_encode(array("event" => $return_arr));
現在、次のようなものが返されます。
Object {event: Array[15]}
event: Array[15]
0: Object
id: "1"
title: "Hello World"