将新日期放入数组php中
对于Google Visualization,我手工编写了JSON(我知道很凌乱),我没有想到将新日期放入数组php中,php,date,google-visualization,json,Php,Date,Google Visualization,Json,对于Google Visualization,我手工编写了JSON(我知道很凌乱),我没有想到NAME\u TEAM中的,,最近出现了一个问题,因为我的第一个团队名称是用撇号输入的。我已经阅读并尝试实现phpjson\u encode。我对日期有意见。新日期在旧的凌乱的json格式中运行良好,但是当我尝试在json_encode版本中使用任何类似的内容时,会出现一个错误致命错误:Class'Date'。格式必须是date,可视化api才能理解这些值 foreach ($data as $row)
NAME\u TEAM
中的,
,最近出现了一个问题,因为我的第一个团队名称是用撇号输入的。我已经阅读并尝试实现phpjson\u encode
。我对日期有意见。新日期
在旧的凌乱的json格式中运行良好,但是当我尝试在json_encode版本中使用任何类似的内容时,会出现一个错误致命错误: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) . ']'; ?>);
如果是案例1或案例2,您想要什么 结果是案例2
如果是案例1或案例2,您想要什么
结果是案例2
您不能在JSON中使用日期对象;传输日期的唯一方法是通过字符串,但是DataTable.addRows
方法不会将字符串解析为日期对象,因此必须转换为完整的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); ?>);
var data=new google.visualization.DataTable();
您不能在JSON中使用日期对象;传输日期的唯一方法是通过字符串,但是DataTable.addRows
方法不会将字符串解析为日期对象,因此必须转换为完整的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); ?>);
var data=new google.visualization.DataTable();
新日期($year,$month,$day)
实际上不是有效的JSON。您正在构建文本Javascript源代码,而不是JSON。您应该将JSON中的日期编码为常规字符串,然后在Javascript中对其进行后期处理,使其成为Javascript对象。我应该将我的日期存储为字符串,例如“新日期(2013,8,14)”
这将如何改变我对visualization.DataTable'data.addRows()的输入方式
我已经在初始问题中添加了额外的代码,显示了JSON的集成位置。有帮助的问题:新日期($year,$month,$day)
实际上不是有效的JSON。您正在构建文本Javascript源代码,而不是JSON。您应该将JSON中的日期编码为常规字符串,然后在Javascript中对其进行后期处理,使其成为Javascript对象。我应该将我的日期存储为字符串,例如“新日期(2013,8,14)”
这将如何改变我对visualization.DataTable'data.addRows()的输入方式
我在初始问题中添加了额外的代码,显示了JSON的集成位置帮助问题: