如何在csv中检查列是否为空,如果列不是打印数据,则打印其他内容

时间:2014-09-11 13:11:07

标签: php csv highcharts

实际上我正在做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代码,这是屏幕截图:

enter image description here

在上面的屏幕截图中,当我检查元素时,图表没有绘图,这与我在浏览器中获得的问题相同。

如果列是空的,如何打印图表必须根据csv coluumn值进行绘图。

请帮忙,

谢谢

1 个答案:

答案 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;并避免使用笨重的日期类别。

如果您的问题还有其他问题,那么您必须澄清,因为根据您的帖子,您的难度在哪里并不完全清楚。