csv到JSON无法正常工作

时间:2014-09-10 10:26:32

标签: javascript php json csv

我有一个csv文件,我想转移到JSON但它不能像我希望的那样工作

PHP

$file = $_FILES['csv']['tmp_name'];    
$csv= file_get_contents($file);     
$array = array_map('str_getcsv', explode(";", $csv));
echo "<script type='text/javascript'>alert('OK!');</script>";

javascript

var myJsarray = <?= json_encode($array); ?>;
alert(myJsarray[0][0]);

我的csv看起来像这样

aaa;46
bbb;23
ccc;51
ddd;23

我的输出看起来像这个

[["aaa"],["46\r\nbbb"],["23\r\nccc"],["51\r\nddd"],["23"]]; 

我希望得到

[["aaa"],["46"],["bbb"],["23"],["ccc"],["51"],["ddd"],["23"]]

我的想法是将"$csv=explode("\n", $csv)"放在"$csv= file_get_contents($file); "下 但它给了我错误“$ csv不是一个字符串。

3 个答案:

答案 0 :(得分:0)

你的&#34; CSV&#34;格式不正确:

aaa;46 bbb;23 ccc;51 ddd;23

将其更改为:

aaa,46 bbb,23 ccc,51 ddd,23

答案 1 :(得分:0)

http://jdl-enterprises.co.uk/sof/25763045.php

如果您想要这样的话:

$csv= file_get_contents($file);

$array = explode("\r\n", $csv); // Update this to \n if need be or however you csv saves it

for($i=0;$i<count($array);$i++){
    $array[$i] = explode(';', $array[$i]);
}

这将产生:

[["aaa","46"],["bbb","23"],["ccc","51"],["ddd","23"]]

如果您希望它像您的示例一样,请添加到代码中:

$array2 = array();
foreach($array as $ar) {
    foreach($ar as $a) {
        $array2[] = $a;
    }
}

这将产生:

["aaa"],["46"],["bbb"],["23"],["ccc"],["51"],["ddd"],["23"]

显然整个代码周围都有一组[]缺失,但你可以把它全部放在另一个数组中,或者只是手动添加它们。

答案 2 :(得分:0)

你知道有一个函数只是为了在PHP中读取CSV吗?它被称为fgetcsv()

$data = array();
$fh = fopen('file.csv', 'r');
while (($line = fgetcsv($fh, 0, ';')) !== false) {
    $data[] = $line;
}
fclose($fh);
echo json_encode($data);