Php 如何检查csv中的列是否为空,如果列不为空,则打印数据,否则打印内容
实际上我在做highcharts项目,我在php中使用csv文件数据动态地做这个项目 这是获取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) {
<?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代码…使用空列和非空列。。。。