fgetcsv 将数组转换为带双引号的字符串

fgetcsv convert array to string with double quote enclosure

我正在使用 fgetcsv 函数从 csv 中获取数据作为数组。我想将数组转换为字符串,所以我使用了 implode 函数。

代码:

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但我希望每个条目都用双引号引起来。我该怎么做?

预期结果:`"Ter Aar"、"Netherlands"、"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);
}

这returns一个字符串为"Ter Aar", "Netherlands","4.7159509","52.164688","","""211316"

如您所见,空白数据后面的项目在开头有三个引号。

您可以按如下方式进行

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

这将帮助你确定

谢谢 希望!它会帮助你

尝试以下代码读取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
}