2012-11-06 83 views
-1

我遇到了問題,需要您的幫助! 我想將CSV轉換爲JSON,並將1行CSV導出爲1文件JSON(JSON的內容是CSV行的內容,JSON的名稱是此行的ID)。 我嘗試做,但它只顯示和下載JSON。 請給我一個這個問題的建議。 感謝您的幫助!如何將CSV轉換爲JSON並需要CSV文件中的一行將導出一個文件JSON

<?php 

header('Content-type: application/json'); 

$feed = 'jsondata_palpad.csv'; 

$keys = array(); 
$newArray = array(); 

function csvToArray($file, $delimiter) { 
    if (($handle = fopen($file, 'r')) !== FALSE) { 
    $i = 0; 
    while (($lineArray = fgetcsv($handle, 4000, $delimiter, '"')) !== FALSE) { 
     for ($j = 0; $j < count($lineArray); $j++) { 
     $arr[$i][$j] = $lineArray[$j]; 
     } 
     $i++; 
    } 
    fclose($handle); 
    } 
    return $arr; 
} 

$data = csvToArray($feed, ','); 

$count = count($data) - 1; 

$labels = array_shift($data); 

foreach ($labels as $label) { 
    $keys[] = $label; 
} 

$keys[] = 'id'; 

for ($i = 0; $i < $count; $i++) { 
    $data[$i][] = $i; 
} 

for ($j = 0; $j < $count; $j++) { 
    $d = array_combine($keys, $data[$j]); 
    $newArray[$j] = $d; 
} 

header("Content-type: application/json"); 
header("Content-Disposition: attachment; filename=test.json"); 
header("Expires: 0"); 
header("Pragma: no-cache"); 
echo json_encode($newArray); 

?> 
+2

你有沒有嘗試過自己呢?具體是什麼問題? Stackoverflow不是(http://stuck.include-once.org/#help5)代碼寫入服務。 – mario

+0

我試過了,但不知道該怎麼辦,請幫幫我! – phucloi89

+0

請構造一個小樣本輸出。不清楚輸入結構是什麼,也不是如果您希望在一個JSON輸出中使用列/行,或者在您提到的問題中使用不同的文件。 – mario

回答

0

所以,你有一個標題爲CSV文件。

要讀取它,第一行轉換爲數組:

$csv = array_map("str_getcsv", file($filename)); 
$head = array_shift($csv); 

以轉換成一個關聯數組:

$csv = array_map("array_combine", array_fill(0, count($csv), $head), $csv); 

要生成文件:

foreach ($csv as $index => $row) { 

    file_put_contents("$index.json", json_encode($row)); 

} 

這裏循環計數器$index用於生成文件名。

請參閱用戶手冊上的解釋:

如果你沒有想別的東西,下一次寫一個更精確的問題。