Php 二维阵列到fputcsv不工作
我的数组看起来像这样Php 二维阵列到fputcsv不工作,php,arrays,multidimensional-array,fputcsv,Php,Arrays,Multidimensional Array,Fputcsv,我的数组看起来像这样 Array ( [0] => January [1] => 2015-01-30 [2] => 2015-01-15 [3] => February [4] => 2015-02-27 [5] => 2015-02-18 [6] => March [7] => 2015-03-31 [8] => 2015-03-18 ) $header = array("Month","Date One","Date
Array
(
[0] => January
[1] => 2015-01-30
[2] => 2015-01-15
[3] => February
[4] => 2015-02-27
[5] => 2015-02-18
[6] => March
[7] => 2015-03-31
[8] => 2015-03-18
)
$header = array("Month","Date One","Date Two");
$fp = fopen($filename, "w");
fputcsv ($fp, $header, "\t");
foreach($payments_array as $row){
fputcsv($fp, array($row), "\t");
}
fclose($fp);
如何将其以三列形式输出到csv?一个表示月份名称,另两个表示随后的两个日期
目前我的代码是这样的
Array
(
[0] => January
[1] => 2015-01-30
[2] => 2015-01-15
[3] => February
[4] => 2015-02-27
[5] => 2015-02-18
[6] => March
[7] => 2015-03-31
[8] => 2015-03-18
)
$header = array("Month","Date One","Date Two");
$fp = fopen($filename, "w");
fputcsv ($fp, $header, "\t");
foreach($payments_array as $row){
fputcsv($fp, array($row), "\t");
}
fclose($fp);
标题很好,但我不知道如何获得数据的三列。此时,At array进入csv的一列中
我想
array\u chuck()
可能会有帮助,但我没办法解决这个问题。这应该适合你:
在这里,我只是将结构从:
Array
(
[0] => January
[1] => 2015-01-30
[2] => 2015-01-15
[3] => February
[4] => 2015-02-27
[5] => 2015-02-18
[6] => March
[7] => 2015-03-31
[8] => 2015-03-18
)
致:
我通过将数组拆分为3块来实现这一点。在这之后,我只需遍历标题数组,并将每个标题数组放入$data
数组中。在此之后,您只需像以前一样循环遍历数组,并将每一行写入.csv
文件
<?php
$arr = array_chunk($arr, 3);
foreach($arr[0] as $k => $v)
$data[] = array_column($arr, $k);
$fp = fopen($filename, "w");
foreach($data as $row){
fputcsv($fp, $row, "\t");
}
fclose($fp);
?>
编辑:
我想我错过了什么;所以这应该是你想要的:
<?php
$data = array_chunk($arr, 3);
$header = array("Month","Date One","Date Two");
$fp = fopen($filename, "w");
fputcsv($fp, $header, "\t");
foreach($data as $row){
fputcsv($fp, $row, "\t");
}
fclose($fp);
?>
清理数据。。。我现在看到Rizier123的答案了。。。可能更干净。不管怎么说,每个人都在说的关键是,按照您想要的方式获取阵列,然后担心fputcsv
$payments_array = [
'January',
'2015-01-30',
'2015-01-15',
'February',
'2015-02-27',
'2015-02-18',
'March',
'2015-03-31',
'2015-03-18'];
$better_payments_array = [];
for ($i=0; $i<count($payments_array); $i++) {
$better_payments_array[] = [$payments_array[$i], $payments_array[$i+1], $payments_array[$i+2]];
$i=$i+2;
}
var_dump($better_payments_array);
array(3) {
[0]=>
array(3) {
[0]=>
string(7) "January"
[1]=>
string(10) "2015-01-30"
[2]=>
string(10) "2015-01-15"
}
[1]=> ...
$payments\u数组=[
“一月”,
'2015-01-30',
'2015-01-15',
“二月”,
'2015-02-27',
'2015-02-18',
“三月”,
'2015-03-31',
'2015-03-18'];
$better_payments_array=[];
对于($i=0;$i)
阵列(3){
[0]=>
字符串(7)“一月”
[1]=>
字符串(10)“2015-01-30”
[2]=>
字符串(10)“2015-01-15”
}
[1]=> ...
$array=array('一月'、'2015-01-30'、'2015-01-15'、'二月'、'2015-02-27'、'2015-02-18'、'三月'、'2015-03-31'、'2015-03-18');
$header=数组(“月”、“日期一”、“日期二”);
$chunks=array\u chunk($array,3);
$fp=fopen('test.csv',“w”);
fputcsv($fp,$header,“\t”);
对于($i=0;$iIs,您可以将数组()设置为多维数组?类似于数组(“一月”=>数组(“2015-01-30”、“2015-01-15”))比我想象的更接近!谢谢。但是你的解决方案创建了12列和3行。我想要12行中有3列。@mike3875什么,怎么做?你的数组只有9个元素!所以它只创建了3行,每个元素有3列。你真正使用的数组是什么?你希望得到什么输出?@mike3875我想我现在明白了你的意思,更新了我的answer@mike3875那么我的编辑解决方案还是其他答案?或者我们在哪里?如果没有任何帮助,请确保向我们展示您的真实阵列和预期输出是的,很抱歉。我的意思是9。您更新的答案是正确的!
$payments_array = [
'January',
'2015-01-30',
'2015-01-15',
'February',
'2015-02-27',
'2015-02-18',
'March',
'2015-03-31',
'2015-03-18'];
$better_payments_array = [];
for ($i=0; $i<count($payments_array); $i++) {
$better_payments_array[] = [$payments_array[$i], $payments_array[$i+1], $payments_array[$i+2]];
$i=$i+2;
}
var_dump($better_payments_array);
array(3) {
[0]=>
array(3) {
[0]=>
string(7) "January"
[1]=>
string(10) "2015-01-30"
[2]=>
string(10) "2015-01-15"
}
[1]=> ...
$array=array( 'January','2015-01-30','2015-01-15','February','2015-02-27','2015-02-18','March','2015-03-31','2015-03-18');
$header = array("Month","Date One","Date Two");
$chunks=array_chunk($array,3);
$fp = fopen('test.csv', "w");
fputcsv ($fp, $header, "\t");
for($i=0;$i<count($chunks);$i++) {
fputcsv($fp, $chunks[$i], ',');
}
fclose($fp);