2017-02-24 70 views
1

我从csv获取的数据作为使用fgetcsv函数数组。我想将数组转换成字符串,所以我已经使用了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

感谢您的帮助。 –

1

尝试下面的代码读取csv文件,并获取数据的多维数组

$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

感谢您的回答 –