2016-02-18 2 views
1

У меня есть следующий код:MySQL PHP массив определенный формат

<?php 
//mysqli query here 

$table = array(); 
$table['cols'] = array(

array('id' => '', 'label' => 'Date', 'type' => 'date'), 
array('id' => '', 'label' => 'Amount ', 'type' => 'number'), 
); 
$rows = array(); 
foreach($result as $row){ 
$temp = array(); 

$date1 = date_create_from_format('Y-m-d H:i:s', $row['Date']); 
$date2 = date_format($date1, 'm-d-Y'); 

$temp[] = array('v' => (string)'new Date("'.$date2.'")'); 
$temp[] = array('v' => (float) $row['Amount']); 
$rows[] = array('c' => $temp); 
} 

$result->free(); 
$table['rows'] = $rows; 
$jsonTable = json_encode($table, true); 
echo $jsonTable; 
?> 

Это выводит следующие данные в Google линейный график:

{"cols":[ 
{"label":"Reading Date","type":"date"}, 
{"label":"Reading ","type":"number"}, 
"rows":[ 
{"c":[{"v":"new Date(10\/04\/2015)"},{"v":0.4}]}, 
{"c":[{"v":"new Date(02\/18\/2016)"},{"v":0.6}]}]} 

Однако мне это нужно, чтобы быть в точном следующих чтобы диаграмма работала должным образом:

{"cols":[ 
     {"label":"Reading Date","type":"date"}, 
     {"label":"Cl Reading(mg\/l) ","type":"number"} 
    ], 
    "rows":[ 
     {"c":[{"v":new Date("10/04/2015")},{"v":0.4}]}, 
     {"c":[{"v":new Date("02/18/2016")},{"v":0.6}]} 
    ]} 

так что действительно я смотрю только на одну строку, которая нуждается в изменении, но не может казаться чтобы получить его в формате, который мне нужен:

$temp[] = array('v' => (string)'new Date("'.$date2.'")'); 

Может ли кто-нибудь помочь мне в этом? Я знаю его, вероятно, простой, но просто не могу показаться, чтобы получить это ..

ответ

2

что-то более читаемым поможет

<?php 
//mysqli query here 

$table = array(
    'cols' => array(
     array('id' => '', 'label' => 'Date', 'type' => 'date'), 
     array('id' => '', 'label' => 'Amount ', 'type' => 'number'), 
    ), 
    'rows' => array(), 
); 
foreach($result as $row){ 
    $date1 = date_create_from_format('Y-m-d H:i:s', $row['Date']); 
    $date2 = date_format($date1, 'Y, m, d'); // this 
    $table['rows'][] = array(
     'c' => array(
      array('v' => '\'Date('.$date2.')\''), // and this 
      array('v' => (float) $row['Amount']), 
     ) 
    ); 
} 

$result->free(); 
$jsonTable = json_encode($table, true); 
echo $jsonTable; 
?> 

теперь, что это такое, что нужно изменить?

Edit:
ОК, теперь я вижу ... вы не желая генерировать JSON, вы думаете, что хочет произвести JavaScript .. Не .. просто держать его в формате JSON ...
(см. What is the difference between JSON and Object Literal Notation?)

Создайте объекты Date после факта. У вас будет строка даты .. просто передайте это конструктору Date.

Edit 2:
см Google Documentation - Dates and Times Using the Date String Representation
вам просто необходимо окружить новый Date (...) в кавычках (

Edit 3: Я обновил свой блок кода, чтобы отразить это в Google документация

0

Благодаря Брэд Кент указал мне в правильном направлении:

<?php 

//mysql query 


    $table = array(
    'cols' => array(
     array('id' => '', 'label' => 'Date', 'type' => 'date'), 
     array('id' => '', 'label' => 'Amount ', 'type' => 'number'), 

    ), 
    'rows' => array(), 
); 
foreach($result as $row){ 
    $date1 = date_create_from_format('Y-m-d H:i:s', $row['Date']); 
    $date2 = date_format($date1, 'Y, m, d'); 
    $table['rows'][] = array(
     'c' => array(
      array('v' => 'Date('.$date2.')'), 
      array('v' => (float) $row['Amount']) 

     ) 
    ); 
} 

$result->free(); 
$jsonTable = json_encode($table, true); 
echo $jsonTable; 

    ?> 
Смежные вопросы