我需要在使用PHP的服務器上將CSV文件轉換爲JSON。我使用這個腳本,它的工作原理:使用PHP將CSV轉換爲JSON?
function csvToJSON($csv) {
$rows = explode("\n", $csv);
$i = 0;
$len = count($rows);
$json = "{\n" . ' "data" : [';
foreach ($rows as $row) {
$cols = explode(',', $row);
$json .= "\n {\n";
$json .= ' "var0" : "' . $cols[0] . "\",\n";
$json .= ' "var1" : "' . $cols[1] . "\",\n";
$json .= ' "var2" : "' . $cols[2] . "\",\n";
$json .= ' "var3" : "' . $cols[3] . "\",\n";
$json .= ' "var4" : "' . $cols[4] . "\",\n";
$json .= ' "var5" : "' . $cols[5] . "\",\n";
$json .= ' "var6" : "' . $cols[6] . "\",\n";
$json .= ' "var7" : "' . $cols[7] . "\",\n";
$json .= ' "var8" : "' . $cols[8] . "\",\n";
$json .= ' "var9" : "' . $cols[9] . "\",\n";
$json .= ' "var10" : "' . $cols[10] . '"';
$json .= "\n }";
if ($i !== $len - 1) {
$json .= ',';
}
$i++;
}
$json .= "\n ]\n}";
return $json;
}
$json = csvToJSON($csv);
$json = preg_replace('/[ \n]/', '', $json);
header('Content-Type: text/plain');
header('Cache-Control: no-cache');
echo $json;
的$csv
變量是從它返回CSV內容的捲曲請求所產生的字符串。
我相信這不是最有效的PHP代碼,因爲我是初學者開發人員,而且我的PHP知識水平低。 有沒有更好,更有效的方法來使用PHP將CSV轉換爲JSON?
在此先感謝。
注意。我知道我添加空白,然後刪除它,我這樣做,所以我可以選擇返回「可讀」JSON通過刪除行$json = preg_replace('/[ \n]/', '', $json);
用於測試目的。
編輯。感謝您的回覆,基於這些新的代碼是這樣的:
function csvToJson($csv) {
$rows = explode("\n", trim($csv));
$csvarr = array_map(function ($row) {
$keys = array('var0','var1','var2','var3','var4','var5','var6','var7','var8','var9','var10');
return array_combine($keys, str_getcsv($row));
}, $rows);
$json = json_encode($csvarr);
return $json;
}
$json = csvToJson($csv);
header('Content-Type: application/json');
header('Cache-Control: no-cache');
echo $json;
非常感謝你,這是一個非常乾淨的解決方案,我編輯我的帖子與我現在使用的代碼基於您的答案,我加了array_combine輸出JSON的屬性名稱。 – VerizonW 2011-01-27 05:41:19