首页 文章

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

提问于
浏览
1

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

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 . But I would like each entry to be enclosed by double quotes. How can I do that?

预期结果:“Ter Aar”,“Netherlands”,“4.7159509”,“52.164688”,“”,“211316”

My approach #1 -

我在documentation之后通过 " 作为机箱,但它无法正常工作 .

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

My approach #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" .

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

2 回答

  • 2

    你可以这样做

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

    这将有助于您确定

    谢谢希望!它会帮助你

  • 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
    }
    

相关问题