【问题标题】:Multidimensional array to CSV多维数组到 CSV
【发布时间】:2017-08-28 10:48:37
【问题描述】:

我得到了这个数组:

array (
  'cat' => 
  array (
    0 => 
    array (
      'name' => 'Sales',
      'url' => 'http://videos.volkswagen.nl/videos/videos/',
      'subs' => 
      array (
        0 => 
        array (
          'full_url' => 'http://videos.volkswagen.nl/videos/assistentiesystemen/',
          'key' => 'assistentiesystemen',
          'key_clean' => 'Assistentiesystemen',
          'videos' => 
          array (
            0 => 
            array (
              'nice_name' => 'Multi Collision braking system',
              'vid_url' => 'www.youtube.com/video/3lGfTZdVK1s',
            ),
            1 => 
            array (
              'nice_name' => 'Lane Assist',
              'vid_url' => 'www.youtube.com/video/II68oVm4zro',
            ),
            2 => 
            array (
              'nice_name' => 'Traffic Jam Assist',
              'vid_url' => 'www.youtube.com/video/tCe8Zpz8ceQ',
            ),
            3 => 
            array (
              'nice_name' => 'Sign assist',
              'vid_url' => 'www.youtube.com/video/SypjMPcSWfk',
            ),
            4 => 
            array (
              'nice_name' => 'Park assist',
              'vid_url' => 'www.youtube.com/video/38BbjLmVJXk',
            ),
            5 => 
            array (
              'nice_name' => 'Front assist',
              'vid_url' => 'www.youtube.com/video/kCpQojqZeWE',
            ),
            6 => 
            array (
              'nice_name' => 'Trailer assist',
              'vid_url' => 'www.youtube.com/video/N0fa4dUBkvE',
            ),
            7 => 
            array (
              'nice_name' => 'Area view',
              'vid_url' => 'www.youtube.com/video/6mgDraWpGvE',
            ),
          ),
        ),
        1 => 
        array (
          'full_url' => 'http://videos.volkswagen.nl/videos/comfortsystemen/',
          'key' => 'comfortsystemen',
          'key_clean' => 'Comfortsystemen',
          'videos' => 
          array (
            0 => 
            array (
              'nice_name' => 'Gesture Control',
              'vid_url' => 'www.youtube.com/video/bOejnFiC88E',
            ),
            1 => 
            array (
              'nice_name' => 'ACC Adaptive Cruise Control',
              'vid_url' => 'www.youtube.com/video/W5L75iR4ySw',
            ),
            2 => 
            array (
              'nice_name' => 'Rear View',
              'vid_url' => 'www.youtube.com/video/v272JxYMjlo',
            ),
            3 => 
            array (
              'nice_name' => 'Hill Hold',
              'vid_url' => 'www.youtube.com/video/IzZFSp0Z8ZQ',
            ),
            4 => 
            array (
              'nice_name' => 'Dynamic Light Assist',
              'vid_url' => 'www.youtube.com/video/mRWEdXZYcio',
            ),
          ),
        ),
      );

我想将所有数据转换为 csv 文件。问题是,由于所有子数组,我似乎无法让它工作。

这是我尝试过的:

header("Content-Disposition: attachment; filename=\"demo.xls\"");
header("Content-Type: application/vnd.ms-excel;");
header("Pragma: no-cache");
header("Expires: 0");
$out = fopen("php://output", 'w');
foreach ($result as $data)
{
    $finalResult = [];
    array_walk_recursive($data, function($item) use (&$result) {
            $finalResult[] = $item;
        });
    fputcsv($out, $finalResult,"\t");
}   
fclose($out);

这就是我希望 csv 文件在 excel 中的样子:

知道我怎样才能让它工作吗?任何帮助将不胜感激。

【问题讨论】:

  • 您能否更新问题以显示您期望的一行 CSV 输出?您希望如何将多维数据折叠成二维?
  • 此外,如果您向我们展示var_export() 而不是print_r(),我们会得到一个数组表示,我们可以复制/粘贴并轻松测试我们的答案。我们这些不屑于测试我们的答案的人
  • 添加了一个例子@mkaatman
  • 编辑@RiggsFolly
  • CSV 是逗号分隔值。每行一条记录。我在您的输出示例中没有看到任何逗号,而且它看起来不像我见过的任何 CSV。

标签: php arrays csv multidimensional-array export-to-csv


【解决方案1】:

这可能是你想做的事

$out = fopen("tst.csv", 'w');
$finalResult = [];
foreach ($result['cat'] as $sales){
    foreach ( $sales['subs'] as $occ => $stuff){
        foreach ( $stuff['videos'] as $video ) {
            $line = [$sales['name'], $stuff['key'], $video['vid_url'], $video['nice_name'] ];
            //$finalResult[] = $a;
            fputcsv($out, $line);
        }
    }
}
//print_r($finalResult);
fclose($out);

哪个产生

Sales,assistentiesystemen,www.youtube.com/video/3lGfTZdVK1s,"Multi Collision braking system"
Sales,assistentiesystemen,www.youtube.com/video/II68oVm4zro,"Lane Assist"
Sales,assistentiesystemen,www.youtube.com/video/tCe8Zpz8ceQ,"Traffic Jam Assist"
Sales,assistentiesystemen,www.youtube.com/video/SypjMPcSWfk,"Sign assist"
Sales,assistentiesystemen,www.youtube.com/video/38BbjLmVJXk,"Park assist"
Sales,assistentiesystemen,www.youtube.com/video/kCpQojqZeWE,"Front assist"
Sales,assistentiesystemen,www.youtube.com/video/N0fa4dUBkvE,"Trailer assist"
Sales,assistentiesystemen,www.youtube.com/video/6mgDraWpGvE,"Area view"
Sales,comfortsystemen,www.youtube.com/video/bOejnFiC88E,"Gesture Control"
Sales,comfortsystemen,www.youtube.com/video/W5L75iR4ySw,"ACC Adaptive Cruise Control"
Sales,comfortsystemen,www.youtube.com/video/v272JxYMjlo,"Rear View"
Sales,comfortsystemen,www.youtube.com/video/IzZFSp0Z8ZQ,"Hill Hold"
Sales,comfortsystemen,www.youtube.com/video/mRWEdXZYcio,"Dynamic Light Assist"

【讨论】:

    猜你喜欢
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多