我有这个数组:
$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
个白化数据。请帮助我
答案 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。