Вывод данных с php в csv не между кавычками, а прямыми [field] = data - PullRequest
0 голосов
/ 03 января 2019

Я ищу вывод данных в CSV без кавычек. На данный момент у меня есть значения в кавычках. Они нужны мне прямо, без кавычек для стандартного magento2 import "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', эволюция = '2586', grape_variety = 'Мерло'"

Мне нужно это:

"product_code = 2586, product_code_1 = 1A25861, product_code_2 = N12-25860, alcohol_gradiation = 13,50, allergy_warning = 2586, эволюция = 2586, grape_variety = Мерло"

Есть ли решение?

1 Ответ

0 голосов
/ 03 января 2019

Вы можете обработать его самостоятельно, просматривая массив и создавая строку со всем содержимым, связанным вместе (просто удалите завершающий , при добавлении) ...

$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); 
...