将带有 php 的数据输出到 csv,而不是在引号之间,而是直接 [field]=data

Output data with php to csv not inbetween quotes but straight [field]=data

我希望以不带引号的 csv 格式输出数据。 目前我有引号之间的值。对于标准 magento2 导入 "additional_attributes".

,我需要它们直接不带引号

编辑:我需要说明的是我只需要这个数组中的值不带引号。其余的需要默认的引号。 所以我有多个带引号的列,我有一个名为 additional_attributes 的列,其中包含多个信息,但需要不带引号的值。

我在一个单独的数组中定义 additional_attributes,然后像这样将其打印到 csv:

     $additional_attributes = [
        'product_code'       => $article->getArticleCode(),
        'alcohol_gradiation' => trim(preg_replace('/\t+/', '',        $article->getAlcohol())), 
    ];


   fputcsv($csvFile, $row, $delimiter);
        $additional_attributes = implode(',', array_map(
        function ($v, $k) {
            return sprintf("%s='%s'", $k, $v);
        },
        $additional_attributes, array_keys($additional_attributes)
    ));

   $row['additional_attributes'] = $additional_attributes;

我得到的 additional_attribute 值都在 '' 之间,如下图所示。它以双引号开头是正确的,但随后的值应该没有引号。

我对 additional_attribute 列的输出是这样的(需要在开头和结尾加双引号):

"product_code='2586',product_code_1='1A25861',product_code_2='N12-25860',alcohol_gradiation='13.50',allergy_warning='2586',evolution='2586',grape_variety='Merlot'"

我需要这个:

"product_code=2586,product_code_1=1A25861,product_code_2=N12-25860,alcohol_gradiation=13.50,allergy_warning=2586,evolution=2586,grape_variety=Merlot"

有解决办法吗?

您可以自己处理它,方法是遍历数组并创建一个将所有内容链接在一起的字符串(添加时只需删除尾随的 ,)...

$addAttributes = '';
foreach ( $additional_attributes as $name => $attribute )    {
    $addAttributes .= $name."=".$attribute.",";
}
$row['additional_attributes'] = rtrim($addAttributes,",");

如果您现有的代码是...

$additional_attributes = implode(',', array_map( function ($v, $k) { 
                   return sprintf("%s='%s'", $k, $v); 
               }, 
               $additional_attributes, 
               array_keys($additional_attributes) ));

然后你只需要更改 sprintf 因为引号在那里...

return sprintf("%s=%s", $k, $v);