Simone Del Popolo
Simone Del Popolo

Reputation: 3

csv file into array , translation system for a site

I need help to solve this problem:

I have a csv file like this

hello,ciao
goodbye,arrivederci

as you can see I try to create a translation system for a site now I want this csv file into an array, the resultant array must be the same of $langArray

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

I already have a solution using a Json file to have an array like this, and is most usefull that a csv file and I can use translation system also with javascript. but I want to know the way to do that with a csv file thank you

Upvotes: 0

Views: 854

Answers (3)

mario
mario

Reputation: 145482

For reading a CSV file you should use fopen and fgetcsv, or for the short version str_getcsv (needs current PHP or compat library):

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

Then building the associative map requires a manual loop:

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

Upvotes: 3

djot
djot

Reputation: 2947

<?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);

?>

Upvotes: 0

Alex Turpin
Alex Turpin

Reputation: 47776

You could use explode to split your data once for the new line, then once for the comma, and fill an array with it.

<?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

Upvotes: 0

Related Questions