Php 如何将多维数组中的数据导出到csv

Php 如何将多维数组中的数据导出到csv,php,multidimensional-array,fputcsv,Php,Multidimensional Array,Fputcsv,我正在尝试将一些数据导出到csv。我可以在web上打印数据,但当我将其保存到csv文件时,会显示以下内容: Column 1,"Column 2" Array,"Acme (Sample)",0011U00000AnbfaQAB Array,"Global (Sample)",0011U00000AnbfbQAB 我怎样才能摆脱“数组” 我在这里获取数据并打印: foreach ($records as $record) { print 'Name :'; print htmlspecialc

我正在尝试将一些数据导出到csv。我可以在web上打印数据,但当我将其保存到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";
}
我刚才补充说:

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', ), )
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
试试这个:

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


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


    // Close the file
    fclose($file);


    ?>

试试这个:

 <?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);
?>

这里的要点是选择要保留在cv中的数据 将文件放入$result变量中,然后继续您已经尝试的操作 做


希望这对您有所帮助。

您可以使用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);
?>

这里的要点是选择要保留在cv中的数据 将文件放入$result变量中,然后继续您已经尝试的操作 做


希望这对您有所帮助。

您正在打印
$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', ), )
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', ), )
这意味着您需要在运行
fputcsv()
之前取消设置$record['attributes'],如下所示:

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

您正在打印一个额外的数组,该数组位于
$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', ), )
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', ), )
这意味着您需要在运行
fputcsv()
之前取消设置$record['attributes'],如下所示:

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

只要我们不知道阵列是什么样子,那么这只是一个猜测游戏。发布数组的var_导出我猜每个
$record
中都有第三个元素,这是一个数组,当你尝试
fputcsv()
时,它会放置所有三个元素。我只是用数组的输出来更新它。@Oscar阅读我的答案,以获得更多关于我所说内容的细节。Mohammed Yassine CHABLI有一个类似的解决方案。只要我们不知道数组是什么样子,那么这只是一个猜测游戏。发布数组的var_导出我猜每个
$record
中都有第三个元素,这是一个数组,当你尝试
fputcsv()
时,它会放置所有三个元素。我只是用数组的输出来更新它。@Oscar阅读我的答案,以获得更多关于我所说内容的细节。Mohammed Yassine CHABLI也有类似的解决方案。很好!爱你!美好的爱你!