从简单数组创建二维数组以供csv使用

时间:2012-09-04 18:41:26

标签: php

用php创建一个csv文件,预期输入是一个二维数组,所以1行= 1个内部数组。

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

$fp = fopen('file.csv', 'w');

foreach ($list as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);

//output result in file.csv

aaa,bbb,ccc,dddd
123,456,789
"""aaa""","""bbb"""

所以我有以下数组:

$list = array('item1','item2','item3','item4','item5','item6');

我需要获取此数组并将其分解为csv的1个数组中的较小数组。每个小数组需要在索引0处具有“999999”,然后是$list数组中的下两个项目。所以最终的结果是这样的:

$newList = array( array(999999, "item1" , "item2"),
               array(999999, "item3" , "item4"),
               array(999999, "item5" , "item6")
             ); 

原始列表数组有时最多可包含100个值。实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

以下是一种不同的方法,请参阅注释,了解您要添加其他元素的位置(您可以在合并中添加第二个数组,以便在2个列表项之后添加元素!)

请参阅此处了解工作示例:http://codepad.org/hucpT5Yo

<?php
$list = array('item1','item2','item3','item4','item5','item6');
$list_chunks = array_chunk($list,2);

$list_chunks2 = array_map(
                     create_function(
                        '$x',  
                        'return array_merge(array(
                           /* This array is prepended to the second, 
                              add as many elements as you like */
                           999999,
                           "another element to add",
                           483274832
                            ), 
                        $x);'), 
                     $list_chunks);

print_r($list_chunks2);
?>

答案 1 :(得分:0)

$idx = 0;
$newarray = array();
$temparray = array('999999');
foreach($oldarray as $value) {
   $temparray[] = $value;
   if ((++$idx % 2)) == 0) {
       $newarray[] = $temparray;
       $temparray = array('999999');
   }
}