新的日期到数组php


new Date into Array php

对于Google Visualization,我手工编写了JSON(我知道很乱),我没有想到'NAME_TEAM中,这最近出现了一个问题,因为我的第一个团队名称输入了一个省略号。我读了这篇文章,并试图实现php json_encode。我在日期上有问题。new Date在旧的混乱json格式中工作得很好,但是当我尝试使用类似的Json_encode版本时,我得到一个错误Fatal error: Class 'Date'。格式必须为date,以便可视化api能够理解这些值。

foreach ($data as $row) {
$dateArray = explode('-', $row['THE_DATE']);
$year = $dateArray[0];
$month = $dateArray[1] - 1;
$day = $dateArray[2];
$dataArray[] = "[new Date ($year, $month, $day),  {$row['ORANGE']}, {$row['GREEN']}, '{$row['NAME_TEAM']}']";

$itemOutput[] = array(
new Date($year, $month, $day),
$row['ORANGE_SCORE'],
$row['GREEN_SCORE'],
$row['NAME_TEAM'],
);
}
echo "data.addRows(" . json_encode($itemOutput) . ");" ;

创建数据表

  function drawDashboard() {
         //var data = new google.visualization.DataTable();
          var data = new google.visualization.DataTable(<?php echo json_encode($itemOutput, JSON_NUMERIC_CHECK); ?>);
            data.addColumn('date', 'Date');
            data.addColumn('number', 'ORANGE_SCORE');
            data.addColumn('number', 'GREEN_SCORE');
            data.addColumn('string', 'NAME_TEAM');
       //   data.addRows(<?php echo '[' . implode(',', $dataArray) . ']'; ?>);
<<p> 数组格式/strong>
{"c":[
   {"Date":"new Date(2013, 9, 19)"},
   {"ORANGE_SCORE":14},
   {"GREEN_SCORE":7},
   {"NAME_TEAM":"Trigon"}]
},

你不能在JSON中使用Date对象;传输日期的唯一方法是通过字符串,但DataTable.addRows方法不会将字符串解析为Date对象,因此您必须转换为完整的JSON结构才能完成此工作。下面是一个例子:

$itemOutput = array(
    'cols' => array(
        array('type' => 'date', 'label' => 'Date'),
        array('type' => 'number', 'label' => 'ORANGE_SCORE'),
        array('type' => 'number', 'label' => 'GREEN_SCORE'),
        array('type' => 'string', 'label' => 'NAME_TEAM')
    ),
    'rows' => array()
);
foreach ($data as $row) {
    $dateArray = explode('-', $row['THE_DATE']);
    $year = $dateArray[0];
    $month = $dateArray[1] - 1;
    $day = $dateArray[2];
    $itemOutput['rows'][] = array('c' => array(
        array('v' => "Date($year, $month, $day)"),
        array('v' => $row['ORANGE_SCORE']),
        array('v' => $row['GREEN_SCORE']),
        array('v' => $row['NAME_TEAM'])
    ));
}

在javascript中:

var data = new google.visualization.DataTable(<?php echo json_encode($itemOutput, JSON_NUMERIC_CHECK); ?>);

如果情况1或2,你想要什么?

result is Case 2.

结果联系源链接

<?
/***
  CREATE TABLE `24992408` (
`THE_DATE` TIMESTAMP NOT NULL DEFAULT DATE ,
`ORANGE` VARCHAR( 50 ) NOT NULL ,
`ORANGE_SCORE` INT( 11 ) NOT NULL ,
`GREEN` VARCHAR( 50 ) NOT NULL ,
`GREEN_SCORE` INT( 11 ) NOT NULL ,
`NAME_TEAM` VARCHAR( 50 ) NOT NULL
) ENGINE = MYISAM ;
INSERT INTO `24992408` (
`THE_DATE` ,
`ORANGE` ,
`ORANGE_SCORE` ,
`GREEN` ,
`GREEN_SCORE` ,
`NAME_TEAM`
)
VALUES (
  '2014-07-28' , '1', '1', '1', '2', 'NAME_TEAM'
);
***/
$host = "localhost";
$name = "user";
$db = "db";
$password ="password";
function confirm_query($watever){
    global $connection;
    if (!$watever) {
        die("Database query failed! " . mysqli_error($connection));
    }
}
function select_query(){
  global $connection;
  $query  = "SELECT * FROM `24992408` ";
  $admin_set = mysqli_query($connection, $query);
  confirm_query($admin_set);
  return $admin_set;
}
$connection = mysqli_connect($host, $name, $password, $db); 
$row = mysqli_fetch_assoc($admin_set = select_query());
$dateArray = explode('-', $row['THE_DATE']);
$year =  $dateArray[0];          //echo $year;    //2014
$month = $dateArray[1] - 1;      //echo $month;    //6
$day = $dateArray[2];            //echo $day;     //28
// IN PUT
//$date1 =  Date('Ymd',strtotime(sprintf('%04d%02d%02d',$year, $month, $day) ) ); //case 1
$date1 = "new Date ($year, $month, $day)";                                        //case 2
$dataArray[] = "[$date1,  {$row['ORANGE']}, {$row['GREEN']}, '{$row['NAME_TEAM']}']";
$itemOutput[] = array(  $date1,   $row['ORANGE_SCORE'],   $row['GREEN_SCORE'],  $row['NAME_TEAM']   );
echo "data.addRows(" . json_encode($dataArray) . ");" ;
// OUT PUT
//data.addRows(["[20140628, 1, 2, 'NAME_TEAM']"]);                                          // case 1 output
//data.addRows(["[new Date (2014, 6, 28), 1, 2, 'NAME_TEAM']"]);                            // case 2 output
?>