在没有 foreach 的情况下写入 csv 值

Write in a csv values whitout a foreach

我有这个数组:

$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 中只显示 header,我的意思是只有 data active 没有数据。请帮助我

array_values 除了 return 没有任何键的现有数组之外什么都不做,所以你仍然将 2D 数组传递给 fputcsv,这不是它可以一起工作。

从根本上说,您希望对数组中的每个 "row" 执行操作。 这绝对是 foreach 循环的目的,所以我不确定您为什么要尝试避免这种情况。除非你有一个非常特殊的理由避免使用它们(我无法想象那可能是什么),否则你应该使用这种结构。

为了让您的代码正常工作,您需要做的就是围绕您对 fputcsv:

的第二次调用进行循环
foreach ($array as $row) {
  fputcsv($fp, $row);
}

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

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

在显示数据之前。

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