2017-04-03 47 views
-1

我得到這個數組:多維數組CSV

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中:

enter image description here

任何想法,我怎麼能得到這個工作?任何幫助都感激不盡。

+3

可否請你更新的問題,以顯示線條來你所期望的CSV輸出的?您想如何將多維數據摺疊成二維? – mkaatman

+0

另外,如果向我們展示'var_export()'而不是'print_r()',我們可以獲得一個數組表示,我們可以複製/粘貼並輕鬆測試我們的答案。我們這些打擾測試我們的答案是 – RiggsFolly

+0

增加了一個例子@mkaatman –

回答

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"