2014-09-10 32 views
0

我有我想要轉移到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不一個字符串。

+0

'\ r \ n'表示在每個分隔值之後有新行。這些應該被刪除。在記事本++中打開你的csv,看看是否有新行 – iswinky 2014-09-10 10:31:16

回答

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

顯然是有一組[]缺少整個代碼,但可以將它們全部放入另一個數組中,或者只是手動添加它們。

+0

noup ..現在我得到[[aaa,46,r,nbb,23,r,nccc,51,r,nddd,23]] – sritno 2014-09-10 10:45:05

+0

對不起,例子最初有空格,讓我更新代碼。更新了代碼。現在應該工作。 – 2014-09-10 10:45:42

+0

但是當我在第一次爆炸中添加「\ n」時,我得到了這個[[「aaa」,「46 \ r」],[「bbb」,「23 \ r」],[「ccc」,「51 \ r」 ],[ 「DDD」, 「23」]]; 我需要在我的javascript函數中看到我可以使用這個 – sritno 2014-09-10 10:48:34

0

你 「CSV」 是不正確的格式:

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

將其更改爲:

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

認爲他使用的是分號而不是逗號,只要設置爲分隔符就不要緊 – iswinky 2014-09-10 10:30:10

+0

我的csv是excel中的女僕,當我打開它時記事本我得到了這個 – sritno 2014-09-10 10:34:08

0

你知道有一個函數只是爲了讀取PHP中的PHP嗎?它叫做fgetcsv()

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