【问题标题】:PHP array to CSV issuesPHP数组到CSV问题
【发布时间】:2015-07-31 13:15:10
【问题描述】:

我有一个数组: $rowcsv['reasonforabsence'] 这包含未确定数量的值。 我想将此数组的值与其他值一起输出到 CSV:

fputcsv($output, array( $overtime, $rowcsv['reasonforabsence']));

但是当我这样做时,CSV 输出:

|6|"Holiday Full Day,Sick Full Day,Sick AM,Sick PM,Holiday Full Day,Holiday AM,Holiday PM,Absent Full Day,Absent AM|`

所以基本上不是$rowcsv['reasonforabsence'] 数组将值放入新单元格,而是数组只是将所有值放入1 个单元格中。 我试过了:

$reasonforabsence = explode( ',', $rowcsv['reasonforabsence'] );

$reasonforabsence = implode('","', $reasonforabsence);

但我得到了输出:

"Holiday Full Day"",""Sick Full Day"",""Sick AM"",""Sick PM"",""Holiday Full Day"",""Holiday AM"",""Holiday PM"",""Absent Full Day"",""Absent AM"

这一次,所有内容仍显示在 1 个单元格中,并带有引号。

【问题讨论】:

  • 您的$rowcsv['reasonforabsence'] 的一行实际上是什么样子的,请添加print_r()var_dump() 以及$overtime 是什么样的
  • 您也可以尝试将最后2个参数添加到fputcsv($output, array( $overtime, $rowcsv['reasonforabsence']), ',', '"');

标签: php arrays csv fputcsv


【解决方案1】:

使用array_merge$overtime$rowcsv['reasonforabsence'] 组合成一个数组,并将组合后的数组传递给fputcsv

$row = array_merge(array($overtime),explode(',',$rowcsv['reasonforabsence']));
fputcsv($output,$row);

【讨论】:

  • 不错的一个。我不得不将$rowcsv['reasonforabsence'] 字符串分解为一个数组,但它可以按我的意愿工作。我已经尝试了大约 6 个小时来解决它,非常感谢!
【解决方案2】:

使用array( $overtime, $rowcsv['reasonforabsence']),您可以构造一个包含两个条目的数组。 根据$rowcsv['reasonforabsence'] 是一个普通的逗号分隔值字符串,您必须将其explode() 放入一个数组并将其与您的$overtime 值合并:

fputcsv($output, array_merge(array($overtime), explode(',', $rowcsv['reasonforabsence'])));

【讨论】:

    猜你喜欢
    • 2012-10-17
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 2011-10-17
    相关资源
    最近更新 更多