2011-12-16 70 views
0

我需要幫助解決這個問題翻譯系統:CSV文件導入陣列,一個網站

我有這樣

你好csv文件,僑
再見,arrivederci

你可以看到我試着爲一個網站創建一個翻譯系統 現在我想把這個csv文件放到一個數組中,得到的數組必須是相同的$ langArray

<?php $langArray = array([it]=>array([hello]=>ciao,[goodbye]=>arrivederci)); ?> 

我已經有一個解決方案使用Json文件來創建一個這樣的數組,並且最有用的是一個csv文件,我也可以使用帶有JavaScript的翻譯系統。但我想知道如何用csv文件做到這一點,謝謝

回答

3

用於讀取CSV文件,你應該使用fopenfgetcsv,或爲短版str_getcsv(需要當前的PHP或COMPAT庫):

$csv = array_map("str_getcsv", file("it.csv")); 

然後構建關聯映射需要手動循環:

foreach ($csv as $line) 
    $translate["it"][ $line[0] ] = $line[1]; 
+1

請注意,如果列值包含新行字符,即使其使用分隔符/引號正確括起來,短版本也會失敗。 – goat 2011-12-16 19:21:19

0

你可以使用explode來分割你的數據一次爲新行,然後一次爲逗號,並用它填充一個數組。

<?php 
    $translations = array(); 
    $data = 'hello,ciao 
     goodbye,arrivederci'; 
    $words = explode("\n", $data); 
    foreach($words as $w) { 
     $parts = explode(',', $w); 
     $translations[$parts[0]] = $parts[1]; 
    } 
    print_r($translations); 
?> 

http://codepad.viper-7.com/gCKoI9

0
<?php 

$languageArray = ARRAY(); 

$my_csv_it = 'hello,ciao goodbye,arrivederci'; 

$tmp_array_it = explode(' ', $my_csv_it); 


foreach ($tmp_array_it AS $text) { 
    $pairs = explode(',',$text); 
    $languageArray['it'][$pairs[0]] = $pairs[1]; 
} 

print_r ($languageArray); 

?>