在csv值中写出foreach

时间:2018-08-16 14:53:24

标签: php export-to-csv php-5.6

我有这个数组:

$array = [
    'data' => [
        0 => 2678
        1 => 2378
    ],
    'active' => [
        0 => 866
        1 => 111
    ]
    ..........
]

我想放这样的csv

data active 2678 866 2378 111

我尝试过这样:

fputcsv($fp,array_keys($array));
fputcsv($fp,array_values($array));

但是有些东西不起作用。我在csv中仅显示了标头,我的意思是仅data active个白化数据。请帮助我

1 个答案:

答案 0 :(得分:1)

array_values除了返回没有任何键的现有数组之外什么也不做,因此您仍将2D数组传递给fputcsv,这是无法使用的。

从根本上说,您希望对阵列中的每个“行”执行一个操作。 这绝对是一个foreach循环的目的,所以我不确定为什么要避免使用它。除非您有特殊的理由避免使用它们(我无法想象那是什么),否则这就是您应该使用的结构。

要使代码正常工作,您所需要做的就是在对fputcsv的第二次调用周围包装一个循环:

foreach ($array as $row) {
  fputcsv($fp, $row);
}

编辑: 抱歉,我没有注意到数组在问题中转置了。如果要使用它,则需要添加以下行:

$array = array_map(null, ...array_values($array));

在显示数据之前。

有关完整示例,请参见https://3v4l.org/AoRcQ