2017-07-09 17 views
1

まず、このトピックに専用のスレッドがたくさんあることを知っていますが、私の問題の解決策を見つけられませんでした。 は、だから私はこのようになります配列ました:PHPの多次元不規則配列

Array 
(
[0] => id1 
[1] => Array 
    (
     [0] => Url1 
    ) 

[2] => id2 
[3] => no url found 
[4] => id3 
[5] => Array 
    (
     [0] => url3.1 
     [1] => url3.2 
     [2] => url3.3 
    ) 
) 

をし、私は次のように見て、CSVを構築したい:

id1,url1 
id2,no url found 
id3,url3.1,url3.2,url3.3 

foreach($array as $row){ 
    fputcsv($csv, $row, ','); 
} 

と試みたが、それだけの要素をつかみますそれらが存在する場合、サブアレイの私はそれにどのようにアプローチすべきですか?前もって感謝します!

答えて

2

私は、所望の構造を持つことになり、元の1、中間体から配列を作成示唆し、そのからのCSV出力を作成します。

// Preprocess the array to get the format needed for the CSV output 
for ($i = 0; $i < count($array); $i += 2) { 
    $result[] = is_array($array[$i+1]) 
     ? array_merge([$array[$i]], $array[$i+1]) 
     : [$array[$i], $array[$i+1]]; 
} 

foreach($result as $row){ 
    fputcsv($csv, $row, ','); 
} 

は、それがeval.in上で実行を参照してください。

+0

これは、このように構築されているので、最初にこのビルドのビルドを得るにはどうすればいいのだろうかと思っています。 'array_push($ array、$ item [2]、$ g) ' ここで' $ item'は3番目のオブジェクトとしてURLを含む配列で、 '$ g'は前の' preg_match_all'からの一致を持つ配列です。だから最初の場所で$配列をよりうまく構築する方法は見えますか? 助けてくれてありがとう! – sh00t