在没有 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。
我有这个数组:
$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。