2017-02-24 28 views
1

fgetcsv関数を使用して配列としてcsvからデータを取得しています。配列を文字列に変換したいので、implode関数を使用しました。fgetcsv二重引用符で囲んだ文字列に変換

CODE:私は結果の文字列を取得しています

if (($handle = fopen("storelocations.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $datafinal = implode(",",$data); 
     echo $datafinal; 
    } 
    fclose($handle); 
} 

Ter Aar, Netherlands,4.7159509,52.164688,,211316と言います。 しかし、私は各エントリを二重引用符で囲んでおきたいと思います。どうやってやるの?私は渡された

- ` "テルアール"、 "オランダ"、 "4.7159509"、 "52.164688"、 ""、 "211316"

私のアプローチ#1:

期待される結果エンクロージャーとして"documentationに続いていますが、動作していません。

if (($handle = fopen("../storelocations.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",", '"')) !== FALSE) { 
     $datafinal = implode(",",$data); 
     echo $datafinal; 
    } 
    fclose($handle); 
} 

私のアプローチ#2から

function convert($str) { 
    return '"'.$str.'"'; 
} 

if (($handle = fopen("../storelocations.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",", '"')) !== FALSE) { 
     //$datafinal = array_map(convert, $data); 
     $datafinal = implode(",",$data); 
     echo $datafinal; 
     //var_dump($data); 
    } 
    fclose($handle); 
} 

これは"Ter Aar", "Netherlands","4.7159509","52.164688","","""211316"として文字列を返します。

空白のデータに続く項目がわかるように、最初は3つの引用符が付いています。

答えて

2

// PHP 5.3 and later 
echo $datafinal = implode(",",array_filter($data, function($value) { return $value !== ''; })); 

を次のようにして、これはあなたのことを確認

おかげ 希望に役立ちますそれを行うことができます!それはあなた

+0

感謝をcsvファイルを読み込み、多次元配列としてデータを取得するために、次のコードを試してみてくださいするのに役立ちます。 –

1

は、あなたの助けのために

$csv_data = array_map('str_getcsv', file('../storelocations.csv')); 
foreach ($csv_data as $key => $value) 
{ 
    var_dump($value); // print each row of csv 
    var_dump($value[0]) // print first column of each row 
} 
+0

答えをありがとう –

関連する問題