此问题已在此处有答案:
Convert associative array of indexed arrays into multi-line csv text(5个答案)
昨天关门了。
我有一个大的(大小~ 12 k)2D数据数组,如下所示,我想将这些数据插入csv文件。
$data = array
(
'a' => array
(
0 => 111,
1 => 222,
2 => 333,
3 => 444,
),
'b' => array
(
0 => 555,
1 => 666,
2 => 777,
3 => 888,
),
'c' => array
(
0 => 999,
1 => 000,
2 => 111,
3 => 222,
),
);
这里'a','b'和'c'将是CSV标题行,并且应该像下面这样插入相应的数组值:
| a|B|c|
| --------------|--------------|--------------|
| 一一一|五五五|九九九|
| 二百二十二|六六六|千|
| 三百三十三|七七七|一一一|
| 四四四|八八八|二百二十二|
我知道fputcsv
可以用来插入数据,但它将数组值作为一行插入到csv中,但在我的情况下,我想将数组值插入到csv列中。
有没有更简单的方法来插入所有的数组值到csv列,如上表?
3条答案
按热度按时间pb3s4cty1#
有一个array_column函数可能会有帮助:
输出:
voase2hg2#
假设每个子数组包含相同的值计数,您只需几行代码即可实现目标:
在https://onlinephp.io/c/735bc上在线尝试,结果如下:
在official documentation中,您可以找到许多其他有用的数组函数。
a9wyjsp73#
由于CSV文件基本上是逐行写入的,因此您需要:
假设你所有的子数组都有相同数量的键,你可以这样设置:
然后你的循环看起来像这样:
回显数据而不是使用
fputcsv
写入的演示:https://3v4l.org/P5rtU或者,你可以使用一个行键列表来循环,而不是假设它们是按顺序编号的。例如,从第一个子数组中获取键:
然后使用
foreach
代替for
: