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

Php 如何检查csv中的列是否为空,如果列不为空,则打印数据,否则打印内容,php,csv,highcharts,Php,Csv,Highcharts,实际上我在做highcharts项目,我在php中使用csv文件数据动态地做这个项目 这是获取csv文件列数据的代码: <?php if (($handle = fopen("test.csv", "r")) !== FALSE) { $i=0; $len = count(file('test.csv')); while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

实际上我在做highcharts项目,我在php中使用csv文件数据动态地做这个项目

这是获取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);
    }
?>
在上面的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
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
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文件中,图形打印正确:

这是JSFIDLE链接:

在上面的php代码中,我面临的一个问题是,当列为空时,图形正在图形上打印,如果列包含一个值,则图形正在打印

这是我在浏览器中检查元素时遇到的问题的示例屏幕截图,对于上面的php代码,这是屏幕截图:

在上面的屏幕截图中,当我检查元素时,图形没有打印。这与我在浏览器中遇到的问题相同

如果列为空,如何打印图形必须根据csv列值进行打印

请帮忙


谢谢

我认为首先,您可以使您的循环更加精简:

$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轴类型为“datetime”,并避免使用笨重的日期类别


如果您的问题还有更多,您必须澄清,因为您的困难之处并不完全清楚。

k,我从哪里得到错误的意思,如果您打开我在这个链接中给出的链接:如果删除extprop:“”的值,然后加载到本地主机或JSFIDLE中,那么图形将不会显示…删除extprop:“电源问题”的值。。。替换为extprop:“”并加载图形..图形正在打印…这是我面临的问题…请注意我没有遇到您描述的问题,请使用您的示例:是,如果您删除extprop的剩余值…并加载图形…它是'nt loadingHI,',jibriggs…我看到您使用JSFIDLE…请将所有extprop替换为extprop:“”并加载图形…或者如果php代码中有任何更改…如何修改csv代码…使用空列和非空列。。。。