【问题标题】:adding array into csv file - two array values on the same row different column将数组添加到csv文件中-同一行不同列上的两个数组值
【发布时间】:2019-12-03 10:54:49
【问题描述】:

我有一个 php 页面,它正在创建一个 csv 文件以供下载,该文件由一个数组组成。 数组的简写:

$data = array("Joe Bloggs", "jbloggs", "John Doe", "jdoe")

我的数组是由其他命令的输出组成的,所以我不能只更改数组的布局,我可以制作两个数组,一个用于名称,一个用于用户名,如果这有助于实现我的目标。

这就是我将数组值添加到我的 csv 文件中的操作:

$output = fopen('php://output', 'wb');
fputcsv($output, array('Name', 'Username'));
foreach ($data as $line ) {
    $val = explode(",", $line);
    for ($i=0; $i<$val["count"]; $i++); {

    fputcsv($output , array($val[$i])); 
    }
}

fclose($output);

这给了我一个如下所示的 csv:

Name      | Username
Joe Bloggs|
jbloggs   |
John Does |
jdoe      |

真的,我需要将用户名放在同一行但在用户名列中。 我已经尝试过这个和很多变化,但它似乎不起作用,我的想法是我每次将 N 增加 2 所以 $i 将成为名称,因为它是每个其他索引位置,然后在执行 fputcsv 时它会将 1 添加到 $i 以便它会获取用户名,因为它是名称后面的值。

foreach ($data as $line ) {
    $val = explode(",", $line);
    for ($i=0; $i<$val["count"]; $i+=2); {

    fputcsv($output , array($val[$i], $val[$i+1])); 
    }
}

fclose($output);

使用上面的方法仍然可以得到第一列中的所有值。

为编写我的代码样式问题道歉,但我对此不够深入,无法找到如何在数组的 for 循环中获取两个连续值。

【问题讨论】:

  • $val[i+1] - 你的意思是$i,而不是i
  • 感谢我摆脱了错误,但仍然在一个列中获取所有值
  • 那么,您希望在Joe Bloggs 这样的值上实际发生多少“逗号爆炸”?这个值在我看来相当少。

标签: php


【解决方案1】:

这是一种方法。

$output = fopen('php://output', 'wb');
fputcsv($output, array('Name', 'Username'));

$temp = []; //Define a temp array.
foreach ($data as $line ) {
    $temp[]= $line;
    if( count( $temp) == 2 ) { //If no. of values in temp array is 2, write to csv file
        fputcsv($output , $temp );
        $temp = []; //initialize $temp;
    }
}

fclose($output);

【讨论】:

    【解决方案2】:

    您可以简单地使用这两个行代码。

      for ($i=0 ;$i < count($data);$i+2) {       
         fputcsv($output , $data[$i],$data[$i+1]);          
      }
    

    【讨论】:

      猜你喜欢
      • 2021-09-17
      • 1970-01-01
      • 2020-11-06
      • 2021-11-27
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 2017-11-17
      相关资源
      最近更新 更多