2013-04-29 26 views
0

我想將我的CSV轉換爲數組代碼爲文本(製表符分隔)數組代碼塊。這是我認爲現有的工程逗號......將文本(製表符分隔)轉換爲PHP關聯數組,而不是此代碼的CSV?

$rows = array_map('str_getcsv', $content); 
$header = array_shift($rows); 
$csv = array(); 
foreach ($rows as $row) { 
    $csv[] = array_combine($header, $row); 
} 
print_r($csv); 

什麼將例如轉換「str_getcsv」接受了逗號作爲默認選項卡中的最短路徑?

回答

6
$rows = array_map('str_getcsv', $content, array_fill(0, count($content), "\t")); 
+2

而不是'陣列( 「\ t」 的)'應該有像'array_fill(0,計數($內容), 「\ t」 的)' – 2013-04-29 21:45:33

+0

@開發無效居民:你會說做? – raidenace 2013-04-29 21:50:29

+1

'str_getcsv'的第二個參數應該應用於'$ content'中的每個項目,因此參數數組應該與'$ content'的大小相同。現在它只適用於第一個元素併爲其他人發佈通知。 – 2013-04-29 21:53:15

0

這將它放入帶有製表符分隔符的字符串中。然後,您可以將其分解爲數組或按原樣使用它。

$csv = implode("\t", str_getcsv($file, ",")); 
+0

順便說一句,str_replace是使用代碼最快的方法。帶正則表達式的preg_replace是下一個最好/最快的方法。 – Frank 2013-04-29 22:18:36

+0

我正在尋找將文件另存爲文本而不使用逗號,以便在需要時允許逗號輸入數據。 – Shane 2013-04-29 23:14:01

+0

因此,在這種情況下,您可以使用fwrite和我在那裏寫的$ csv字符串,它會完全按照您的要求進行操作。 'fwrite($ handle,$ csv);'和更多的信息是[here](http://php.net/manual/en/function.fwrite.php) – Frank 2013-04-29 23:59:57

相關問題