“str_getcsv”如何工作以及替代方案是什么?

时间:2014-08-28 15:03:58

标签: javascript php json csv

我正在将csv文件转换为json,所以我可以在javascript中使用它。 我是如何新的PHP编程我谷歌的方法来做到这一点,我发现以下代码来做到这一点:     

 $csv= file_get_contents($file);
 $array = array_map("str_getcsv", explode("\n", $csv));
 json_encode($array);

?>

但是“str_getcsv”会将我的数组变成字符串吗?那么这是否意味着我以后不能在javascript中使用该数组中的值来操纵它们? 替代方案是什么? thx提前

2 个答案:

答案 0 :(得分:0)

str_getcsv将您的csv行(字符串)转换为数组(阅读文档http://php.net/manual/en/function.str-getcsv.php)。

该脚本的作用是:

  • $csv= file_get_contents($file);将文件内容放在变量$csv
  • $array = array_map("str_getcsv", explode("\n", $csv));会将字符串分解为每个新行(explode("\n", $csv))分隔的字符串数组,然后为每个数组元素调用函数str_getcsv
  • json_encode($array);将数组作为json字符串返回

因此,您应该添加echo以在输出中包含字符串,以便将其用作javascript对象。像

这样的东西
<script>
    var json = <?php echo json_encode($array);?>
</script>

这样做的意思是str_getcsv不解析完整的csv而只解析一行。该脚本以紧凑的方式遍历每一行。 另一种方法是打开文件处理程序并使用函数fgetcsv

答案 1 :(得分:0)

功能str_getcsv根据文档:

Parses a string input for fields in CSV format and returns an array
containing the fields read.

您应该注意到PHP并未针对此类操作进行了优化。如果您正在阅读大文件,则至少应该使用fopenfgetcsv来减少内存使用量。