我有一个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不是一个字符串。
答案 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);