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

时间:2014-11-21 15:14:27

标签: php json

我是PHP的新手。所以我在互联网上找到这个代码并将其修改为我需要的东西,但似乎它在数组中给了我一个更多的值,有时候。

当csv看起来像这样 答:1个
B:2-
C:3
d:4

没关系,但是当我得到了 答:1,2,3,4
B:1,2,3,4
C:1,2,3,4
d: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); ?> ;

2 个答案:

答案 0 :(得分:1)

file_get_content替换为file,以阅读each line into an array

实施例

// $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"]]

答案 1 :(得分:0)

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