我有一个大小约为12k的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
111 555 999
222 666 000
333 777 111
444 888 222

我知道可以使用fputcsv来插入数据,但是它在CSV中将数组值作为行插入,但在我的例子中,我想将数组值插入到CSV列.

有没有更简单的方法将所有数组值插入到CSV列中,如上表所示?

推荐答案

假设每个子数组包含相同的值计数,您只需几行代码即可实现目标:

  • 使用array_keys获取数组中的所有列名
  • 迭代每个子数组以组成单行,假设该行的每个值都在相同的数组索引位置
$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,
    ),
);
    
$fp = fopen('file.csv', 'w');

// headers
fputcsv($fp, array_keys($data));

// rows contents
for($i = 0; $i<count(current($data)); $i++) {
    $row = [];
    foreach($data as $k => $v) {
        $row[] = $v[$i];
    }
    fputcsv($fp, $row);
}
    
fclose($fp);

https://onlinephp.io/c/735bc上在线试用,结果如下:

a,b,c
111,555,999
222,666,0
333,777,111
444,888,222

official documentation中,您可以找到许多其他有用的数组函数.

Php相关问答推荐

PHP FFI—Convert void * to int

在没有symfony应用程序的情况下使用安全Bundle 包时,缺少配置构建器类

为什么本地主机(Xampp)上的laravel运行速度比普通html站点慢?

将一个按钮添加到WooCommerce产品的管理视图中,该按钮链接到一个自定义的WebHook,并在末尾附加产品ID

莫德克斯.当我try 使用pThumb为手机压缩图像时,没有任何react

如何使用索引加速和优化MySQL搜索

如何在UML类图中可视化变量引用数组

WooCommerce中基于用户角色的不同产品差价

如何将LARAVEL模块路径和项目路径合并,因为当我使用模块路径时,它们会覆盖项目路径

PHP SimpleXML:按属性值访问 node

在具有Angular 的 Laravel 应用程序中,不显示图像

Docker-用于部署的 PHP 应用程序映像无法在本地运行

如何在 Phpunit 的静态提供程序中创建测试双打?

将图像作为 PHP post 响应发送到浏览器

避免在 WooCommerce 中多次触发挂钩函数

注册命名空间后如何获取xml node 值?

设置GA4 PHP API的setSubject以允许访问所有管理员账户属性

使用 PHP 正则表达式从仅包含具有现有顺序的顶级标签的 XML 文档中搜索和创建数组

在 GA4 Data API V1 Beta 中使用 inListFilter 过滤器时出错

fopen 功能不断向我发送我重新加载网页时已发布的重复版本的表单