Я пытаюсь экспортировать некоторые данные в 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
Я предполагаю, что в каждом $record
есть третий элемент, который является массивом, и когда вы пытаетесь fputcsv()
, он помещает все три элемента.
я просто обновляю его выводом массива.
@Oscar Прочитайте мой ответ, чтобы получить более подробную информацию о том, о чем я говорю. У Мохаммеда Ясина ЧАБЛИ есть похожее решение.
Попробуй это:
<?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);
}
ПРИЯТНО! Люблю тебя!
Пока мы не знаем, как выглядит массив, это всего лишь игра в догадки. Опубликовать var_export массива