2015-05-04 5 views
1

Я хочу выводить метки времени без двойных qoutes в "данных:"PHP: запрос временной метки таблицы с 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 json_encode($result, JSON_NUMERIC_CHECK); 

Это выводит следующее: [{ "имя" : «Временная метка», «данные»: [«2015-05-03 22:03:37», «2015-05-03 22:03:41»]}]

Я хочу этого: [2015-05 -03 22: 03: 37,2015-05-03 22:03:41]

+0

Тогда это еще не JSON больше. только число и логические значения могут быть без кавычек в JSON –

+0

Я не вижу ничего плохого в этом коде. Пожалуйста, предоставьте дополнительную информацию о том, почему вам нужен этот конкретный формат. Если вы просто хотите массив раз, почему вы создаете массив массивов? – Twisty

ответ

1

См. http://en.wikipedia.org/wiki/JSON на базовых типах JSON и http://markembling.info/2011/07/json-date-time на представлении JSON DateTime.

Также убедитесь, что вы в курсе MySQL integer field is returned as string in PHP (так с mysql_fetch_assoc вы получаете строковые значения из БДА и без «JSON_NUMERIC_CHECK» всех значений будете строка)

Это очень зависит от вашего читателя JSON, как хранить данные для правильного чтения. Для экземпляра объекта PHP DateTime, используемого в статье http://nitschinger.at/Handling-JSON-like-a-boss-in-PHP для передачи дат. Также я бы рекомендовал использовать формат даты 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))); 
Смежные вопросы