Json 中的 PHP 转换文件又增加了一行


PHP transforming file in Json adds one more line

我对PHP很陌生。所以我在互联网上找到这段代码并将其修改为我需要的,但有时它似乎在数组中给了我一个值。

当 CSV 看起来像这样
时答:1
乙:2
c:3
d:4

没关系,但是当我得到
答:1,2,3,4
乙:1,2,3,4
C:1,2,3,4
深:1,2,3,4

它又增加了一个空行。为什么会这样,我可以防止吗?

<?php
$csv_mimetypes = array(
    'text/csv',
    'text/plain',
    'application/csv',
    'text/comma-separated-values',
    'application/excel',
    'application/vnd.ms-excel',
    'application/vnd.msexcel',
    'text/anytext',
    'application/octet-stream',
    'application/txt',);
 if ($_FILES["csv"]["error"] > 0)
{
 echo "<script type='text/javascript'>alert('no file');</script>";
}
elseif(in_array ($_FILES["csv"]["type"] ,$csv_mimetypes))
{
//get the csv file
    $file = $_FILES['csv']['tmp_name'];    
    $csv= file_get_contents($file);
     $array = explode("'r'n", $csv);
for($i=0;$i<count($array);$i++){
    $array[$i] = explode(';', $array[$i]);
}
    echo "<script type='text/javascript'>alert('OK!');</script>";
}
else
 {
 echo "File must be a .csv";
  }
?>
  <script type="text/javascript" src="Bar.js"></script>
        <script type="text/javascript">
            var myJsarray = <?= json_encode($array); ?> ;

file_get_content替换为 file 以将每一行读入数组。

例:

// $array = file($file, FILE_IGNORE_NEW_LINES);
$array = array("id;podaci1;podaci2", "grad1;25;21", "grad2;23;28", "grad3;45;32");
array_walk($array, function (& $line) {
   $line = explode(';', $line);
});
$json = json_encode($array);
print_r($json);

输出

[["id","podaci1","podaci2"],["grad1","25","21"],["grad2","23","28"],["grad3","45","32"]]

您确定您的 csv 文件都以相同的方式终止吗?
我的意思是:我想当你在数组底部得到一个额外的空行时,相应的 csv 文件会以额外的字段分隔符 ( ; ) 或行分隔符 ( 'r'n ) 终止......