php:使用JSON查询时间戳表

时间:2015-05-04 21:01:29

标签: php mysql json

我想在"数据中输出没有双qoutes的时间戳:"

这是我的php代码:

$sth = mysql_query("SELECT time FROM tableName");
$rows1 = array();
$rows1['name'] = 'Timestamp';
while($rr = mysql_fetch_assoc($sth)) {
    $rows1['data'][] = $rr['time'];
}
$result = array();
array_push($result,$rows1);
print json_encode($result, JSON_NUMERIC_CHECK);

这输出: [{" name":" Timestamp"," data":[" 2015-05-03 22:03:37",&# 34; 2015-05-03 22:03:41"]}]

我想要这个:[2015-05-03 22:03:37,2015-05-03 22:03:41]

1 个答案:

答案 0 :(得分:1)

请参阅有关JSON基本类型的http://en.wikipedia.org/wiki/JSON和有关JSON日期时间表示的http://markembling.info/2011/07/json-date-time

另外请确保您知道MySQL integer field is returned as string in PHP(因此,使用mysql_fetch_assoc从DB获取字符串值而不使用" JSON_NUMERIC_CHECK"您的所有值都将是字符串)

这取决于您的JSON阅读器,如何存储要正确读取的数据。对于文章http://nitschinger.at/Handling-JSON-like-a-boss-in-PHP中用于传输日期的PHP DateTime对象的实例。此外,我建议使用ISO8601日期格式作为日期值,因为您的日期不包括时区,并且可以在不同的读者上区别对待。

<?php
$sth = mysql_query("SELECT time FROM tableName");
$rows1 = array();
$rows1['name'] = 'Timestamp';
$tz =  new DateTimeZone('UTC');
while($rr = mysql_fetch_assoc($sth)) {
    $date = new DateTime($rr['time'], $tz);
    $rows1['data'][] = $date->format(DateTime::ISO8601);
}
$result = array();
array_push($result,$rows1);
print json_encode($result);

但是,如果您只对引用删除日期感兴趣,可以使用以下代码(但结果不是JSON):

<?php
$sth = mysql_query("SELECT time FROM tableName");
$rows1 = array();
$rows1['name'] = 'Timestamp';
while($rr = mysql_fetch_assoc($sth)) {
    $rows1['data'][] = '{' . $rr['time'] . '}';
}
$result = array();
array_push($result,$rows1);
print str_replace('}"', '', str_replace('"{', '', json_encode($result, JSON_NUMERIC_CHECK)));