【问题标题】:How to save a single column from a multidimensional array as a .csv file?如何将多维数组中的单列保存为 .csv 文件?
【发布时间】:2018-09-18 01:51:43
【问题描述】:

以下代码将整个数组导出到 .csv 文件中,但我只想导出特定列。

<?php 
$test = array(array("eric", 7),array("nancy" ,8),array("dave", 10));
$fp = fopen('new.csv', 'w');
foreach ($test as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);
?>

【问题讨论】:

  • 告诉我们$test 的定义位置。
  • 创建一个if,将 csv 标题限制为您想要的标题,将所需字段保存到 csv 文件中。如果您发现任何问题,请告诉我们。
  • @guarav 你想保存哪一栏?你没说。

标签: php multidimensional-array export-to-csv fputcsv array-column


【解决方案1】:

您可以通过在调用 fputcsv() 之前从 $fields 数组中删除要排除的字段来做到这一点。使用传递元素键的 unset() 函数删除字段。

示例

假设您只想有一个名称列表,您将执行以下操作

$test = array(array("eric", 7),array("nancy" ,8),array("dave", 10));
$fp = fopen('new.csv', 'w');
foreach($test as $row){
    unset($row[1]);
    // Removing the index 1 leaves the array with just one field which will be written to the new.csv file.
    fputcsv($fp,$row);
}
fclose($fp)

【讨论】:

    【解决方案2】:

    在将数组放入 csv 之前对其进行处理。 例如,如果您不想要第一个列,请将其删除。 您可以使用函数 array_shift。
    这不会影响原始数组。 喜欢这些代码。

    <?php 
    $test = array(array("eric", 7),array("nancy" ,8),array("dave", 10));
    $fp = fopen('new.csv', 'w');
    foreach ($test as $fields) {
        array_shift($fields);
        fputcsv($fp, $fields);
    }
    
    fclose($fp);
    ?>
    

    只需将您想要的列保留在 csv 中即可。

    【讨论】:

      【解决方案3】:

      在您的循环中,无需修改数组行的副本(使用unset()array_shift() 等),只需提供您希望用作单元素数组的列值。

      fputcsv() 的第二个参数必须是一个数组。这就是$row[0] 值用方括号括起来的原因。

      如果要将名称值保存到文件中,请使用 $row[0]

      如果要将数值保存到文件中,请使用$row[1]

      代码:

      $test = ["eric", 7], ["nancy", 8], ["dave", 10]];
      $fp = fopen("new.csv", 'w');
      foreach ($test as $row) {
          fputcsv($fp, [$row[0]]);  // if you want first column values
      }
      fclose($fp);
      

      【讨论】:

        【解决方案4】:

        例如,如果您只想导出名称,请执行以下操作:

        $test = array(array("eric", 7),array("nancy" ,8),array("dave", 10));
        $fp = fopen('new.csv', 'w');
        foreach ($test as $fields) {
        fputcsv($fp, $fields[0]);
        }
        fclose($fp);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-23
          • 2020-05-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-27
          相关资源
          最近更新 更多