Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 二维阵列到fputcsv不工作_Php_Arrays_Multidimensional Array_Fputcsv - Fatal编程技术网

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);