实际上我正在做highcharts项目,我正在使用csv文件数据动态地在php中进行,
这是获取csv文件列数据的代码:
<?php
if (($handle = fopen("test.csv", "r")) !== FALSE) {
$i=0;
$len = count(file('test.csv'));
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if($i==$len - 1){
echo $i." ".$data[1]." ".$data[5];
}
else if(!empty($data[5])){
echo $i." ".$data[1]." ".$data[5];
}
else{
echo $i." ".$data[1];
}
$i++;
}
fclose($handle);
}
?>
这是没有第5列的csv文件:
13-Jan 98.45 98.99 98.99 99.04
13-Feb 98.49 98.97 98.97 99.06
13-Mar 98.74 99.02 99.02 99.09
13-Apr 98.47 98.74 98.74 98.82
13-May 98.17 98.53 98.53 98.61
13-Jun 98.26 98.53 98.53 98.6
13-Jul 98.2 98.62 98.62 98.68
13-Aug 98.08 98.6 98.6 98.66
13-Sep 98.35 98.61 98.61 98.69
13-Oct 98.24 98.82 98.82 98.9
13-Nov 98.59 98.95 98.95 99.03
13-Dec 98.67 98.98 98.98 99.06
14-Jan 98.93 99.15 99.15 99.23
14-Feb 99.01 99.19 99.19 99.27
14-Mar 99.1 99.3 99.3 99.37
14-Apr 98.95 99.2 99.2 99.27
14-May 98.57 98.82 98.82 98.87
14-Jun 98.26 98.5 98.5 98.54
在上面的csv文件中,我遇到了这个问题。
这是第5列的csv文件:
13-Jan 98.45 98.99 98.99 99.04
13-Feb 98.49 98.97 98.97 99.06
13-Mar 98.74 99.02 99.02 99.09
13-Apr 98.47 98.74 98.74 98.82
13-May 98.17 98.53 98.53 98.61
13-Jun 98.26 98.53 98.53 98.6
13-Jul 98.2 98.62 98.62 98.68 power issue
13-Aug 98.08 98.6 98.6 98.66
13-Sep 98.35 98.61 98.61 98.69
13-Oct 98.24 98.82 98.82 98.9
13-Nov 98.59 98.95 98.95 99.03
13-Dec 98.67 98.98 98.98 99.06 flood
14-Jan 98.93 99.15 99.15 99.23
14-Feb 99.01 99.19 99.19 99.27
14-Mar 99.1 99.3 99.3 99.37
14-Apr 98.95 99.2 99.2 99.27
14-May 98.57 98.82 98.82 98.87
14-Jun 98.26 98.5 98.5 98.54
在上面的csv文件中,图表绘制正确:
这是jsfiddle链接:
http://jsfiddle.net/hj22wbe5/3/
在上面的PHP代码中,我面临一个问题,即当列为空时,图表正在图表上绘图,如果列包含一个值而不是图表正在绘制。
这是我在浏览器中检查元素时遇到问题的示例屏幕截图,对于上面的php代码,这是屏幕截图:
在上面的屏幕截图中,当我检查元素时,图表没有绘图,这与我在浏览器中获得的问题相同。
如果列是空的,如何打印图表必须根据csv coluumn值进行绘图。
请帮忙,
谢谢
答案 0 :(得分:0)
我认为首先,你可以更简化你的循环:
$chart_data = array();
while (($data = fgetcsv($handle, 1000, ",")) !== false) {
$chart_data[] = array (
'x' = strtotime($data[0]) * 1000, //add a javascript friendly epoch time stamp as x value
'y' = $data[1], //pass the y data value
'note' = !empty($data[5]) ? $data[5] : '' //if there is a value, pass it; else pass empty string
);
}
$chart_data = json_encode($chart_data); //echo this variable in your data parameter for you chart
其次,您可以使用上面示例中传递的时间戳来设置x轴类型&#39; datetime&#39;并避免使用笨重的日期类别。
如果您的问题还有其他问题,那么您必须澄清,因为根据您的帖子,您的难度在哪里并不完全清楚。