Как экспортировать данные из многомерного массива в csv

Я пытаюсь экспортировать некоторые данные в csv. Я могу распечатать данные в Интернете, но когда я сохраняю их в файл csv, он показывает следующее:

Column 1,"Column 2"
Array,"Acme (Sample)",0011U00000AnbfaQAB
Array,"Global (Sample)",0011U00000AnbfbQAB

Как я могу избавиться от «массива»?

Я получаю данные здесь и печатаю их:

foreach ($records as $record)
{
print 'Name :';
print htmlspecialchars($record['Name']);
print ' - ';
print htmlspecialchars($record['Id']);
print '<br/>';
print "\n";
}

Это код для сохранения данных в csv:

$file = fopen('toNavasoft.csv', 'w');

// save the column headers
fputcsv($file, array('Column 1', 'Column 2'));

// save each row of the data
foreach ($records as $record)
{
fputcsv($file, $record);
}

// Close the file
fclose($file);

Я только что добавил это:

var_export ($records);

и вывод:

array ( 0 => array ( 'attributes' => array ( 'type' => 'Account', 'url' => '/services/data/v20.0/sobjects/Account/0011U00000AnbfaQAB', ), 'Name' => 'Acme (Sample)', 'Id' => '0011U00000AnbfaQAB', ), 1 => array ( 'attributes' => array ( 'type' => 'Account', 'url' => '/services/data/v20.0/sobjects/Account/0011U00000AnbfbQAB', ), 'Name' => 'Global (Sample)', 'Id' => '0011U00000AnbfbQAB', ), )

Я ожидаю вывод, как:

Column 1,Column 2
Acme (Sample),0011U00000AnbfaQAB
Global (Sample),0011U00000AnbfbQAB

Пока мы не знаем, как выглядит массив, это всего лишь игра в догадки. Опубликовать var_export массива

Andreas 05.04.2019 18:40

Я предполагаю, что в каждом $record есть третий элемент, который является массивом, и когда вы пытаетесь fputcsv(), он помещает все три элемента.

Daniel G 05.04.2019 18:41

я просто обновляю его выводом массива.

Oscar 05.04.2019 18:51

@Oscar Прочитайте мой ответ, чтобы получить более подробную информацию о том, о чем я говорю. У Мохаммеда Ясина ЧАБЛИ есть похожее решение.

Daniel G 05.04.2019 19:06
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
51
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Попробуй это:

 <?php
    $file = fopen('toNavasoft.csv', 'w');
    $array=array('Column 1', 'Column 2');


    fwrite($file,print_r($array,TRUE));


    // Close the file
    fclose($file);


    ?>
Ответ принят как подходящий

Вы можете использовать fputcsv, используя приведенный ниже код:

<?php

$result = array(['column1', 'column2']);
 foreach($records as $record){
  $result[] = [$record['Name'],$record['Id']];
 }


$fp = fopen('toNavasoft.csv', 'w');

foreach ($result as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);
?>

The point here is to select the data you want to persist in the cv file into $result variable and then continue what you already try to do .

Надеюсь, это поможет вам.

Вы печатаете дополнительный массив внутри $record. Вы говорите, что ваш вывод:

array ( 0 => array ( 'attributes' => array ( 'type' => 'Account', 'url' => '/services/data/v20.0/sobjects/Account/0011U00000AnbfaQAB', ), 'Name' => 'Acme (Sample)', 'Id' => '0011U00000AnbfaQAB', ), 1 => array ( 'attributes' => array ( 'type' => 'Account', 'url' => '/services/data/v20.0/sobjects/Account/0011U00000AnbfbQAB', ), 'Name' => 'Global (Sample)', 'Id' => '0011U00000AnbfbQAB', ), )

Это означает, что вам нужно будет отключить $record['attributes'] перед запуском fputcsv() следующим образом:

foreach ($records as $record)
{
  unset($record['attributes']);
  fputcsv($file, $record);
}

ПРИЯТНО! Люблю тебя!

Oscar 05.04.2019 19:13

Другие вопросы по теме