0

用 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 个值。实现这一目标的最佳方法是什么?

4

2 回答 2

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);
?>
于 2012-09-04T19:02:50.133 回答
0
$idx = 0;
$newarray = array();
$temparray = array('999999');
foreach($oldarray as $value) {
   $temparray[] = $value;
   if ((++$idx % 2)) == 0) {
       $newarray[] = $temparray;
       $temparray = array('999999');
   }
}
于 2012-09-04T18:44:47.403 回答