使用PHP将CSV中数组的不同部分组合在一起?

Pooshonk

我有一个来自CSV导入的数组,我想根据一个ID进行分组。

结构如下:

每行都是一个度量,并且注释添加到提交中。一个提交可以有多行。例如,如果有3个度量,那么标题提交数据将重复3次,并带有不同的注释/度量详细信息。

//this is the submission id
[1] => Array
        [0] => Array
            (
                [0] => 1
                [1] => Lot
                [2] => Lot Submission
                [3] => Lot Submission
                [4] => Lot Submission
                [5] => LNW North
                [6] => C Spencer Ltd
                [7] => Panel
                [8] => 1
                [9] => Buildings
                [10] => 2015/2016
                [11] => 2
                [12] => 1,2,3,4,5,6,7,8
                [13] => Testing notes
                [14] => KPI1 - Behavioural Safety
                [15] => PER1 - Health, Safety, and Wellbeing strategy
                [16] => Testing Comment 1
                [17] => Expected
            )

        [1] => Array
            (
                [0] => 1
                [1] => Lot
                [2] => Lot Submission
                [3] => Lot Submission
                [4] => Lot Submission
                [5] => LNW North
                [6] => C Spencer Ltd
                [7] => Panel
                [8] => 1
                [9] => Buildings
                [10] => 2015/2016
                [11] => 2
                [12] => 1,2,3,4,5,6,7,8
                [13] => Testing notes
                [14] => KPI1 - Behavioural Safety
                [15] => PMTEST - Test
                [16] => Testing 2
                [17] => Stretch
            )

        [2] => Array
            (
                [0] => 1
                [1] => Lot
                [2] => Lot Submission
                [3] => Lot Submission
                [4] => Lot Submission
                [5] => LNW North
                [6] => C Spencer Ltd
                [7] => Panel
                [8] => 1
                [9] => Buildings
                [10] => 2015/2016
                [11] => 2
                [12] => 1,2,3,4,5,6,7,8
                [13] => Testing notes
                [14] => KPI1 - Behavioural Safety
                [15] => JP001 - Jamie
                [16] => Testing 3
                [17] => Excellence
            )
[2] => Array
        [0] => Array
            (
                [0] => 2
                [1] => Lot
                [2] => Lot Submission
                [3] => Lot Submission
                [4] => Lot Submission
                [5] => LNW North
                [6] => C Spencer Ltd
                [7] => Panel
                [8] => 1
                [9] => Buildings
                [10] => 2015/2016
                [11] => 2
                [12] => 1,2,3,4,5,6,7,8
                [13] => Testing notes
                [14] => KPI1 - Behavioural Safety
                [15] => PER1 - Health, Safety, and Wellbeing strategy
                [16] => Testing Comment 1
                [17] => Expected
            )

        [1] => Array
            (
                [0] => 2
                [1] => Lot
                [2] => Lot Submission
                [3] => Lot Submission
                [4] => Lot Submission
                [5] => LNW North
                [6] => C Spencer Ltd
                [7] => Panel
                [8] => 1
                [9] => Buildings
                [10] => 2015/2016
                [11] => 2
                [12] => 1,2,3,4,5,6,7,8
                [13] => Testing notes
                [14] => KPI1 - Behavioural Safety
                [15] => PMTEST - Test
                [16] => Testing 2
                [17] => Stretch
            )

每个数组的第0-13部分相同,这是每个提交的标题信息。我想尝试将数组的第14-17部分添加到新数组中。下面是一个示例:

[1] => Array
    (
        [0] => 1
        [1] => Lot
        [2] => Lot Submission
        [3] => Lot Submission
        [4] => Lot Submission
        [5] => LNW North
        [6] => C Spencer Ltd
        [7] => Panel
        [8] => 1
        [9] => Buildings
        [10] => 2015/2016
        [11] => 2
        [12] => 1,2,3,4,5,6,7,8
        [13] => Testing notes
        ['measure'] = array(
            [0] = array(
                [14] => KPI1 - Behavioural Safety
                [15] => PER1 - Health, Safety, and Wellbeing strategy
                ['comments'] = array(
                    [16] => Testing Comment 1
                    [17] => Expected
                )
            ),
            [1] = array(
                [14] => KPI1 - Behavioural Safety
                [15] => PMTEST - Test
                ['comments'] = array(
                    [16] => Testing 2
                    [17] => Stretch
                )
            ),
            [2] = array(
                [14] => KPI1 - Behavioural Safety
                [15] => JP001 - Jamie
                ['comments'] = array(
                    [16] => Testing 3
                    [17] => Excellence
                )
            )
        )                   
    )

[2] => Array
    (
        [0] => 2
        [1] => Lot
        [2] => Lot Submission
        [3] => Lot Submission
        [4] => Lot Submission
        [5] => LNW North
        [6] => C Spencer Ltd
        [7] => Panel
        [8] => 1
        [9] => Buildings
        [10] => 2015/2016
        [11] => 2
        [12] => 1,2,3,4,5,6,7,8
        [13] => Testing notes
        ['measure'] = array(
            [0] = array(
                [14] => KPI1 - Behavioural Safety
                [15] => PER1 - Health, Safety, and Wellbeing strategy
                ['comments'] = array(
                    [16] => Testing Comment 1
                    [17] => Expected
                )
            ),
            [1] = array(
                [14] => KPI1 - Behavioural Safety
                [15] => PMTEST - Test
                ['comments'] = array(
                    [16] => Testing 2
                    [17] => Stretch
                )
            )
        )                   
    )

我很沮丧,但不知道从哪里开始。我可以创建一个新数组并将数据推送到[0] => 1该数组吗,具体取决于(数组的)提交ID

里格斯愚蠢

这将产生所需的数据转换。对您先前的问题进行了少量补充。

<?php
$original =
array(
       array(
             array(
                0 => '1',1 => 'Lot',2 => 'Lot Submission',3 => 'Lot Submission',4 => 'Lot Submission',
                5 => 'LNW North',6 => 'C Spencer Ltd',
                7 => 'Panel',8 => '1',9 => 'Buildings',10 => '2015/2016',
                11 => '2',12 => '1,2,3,4,5,6,7,8',13 => 'Testing notes',14 => 'KPI1 - Behavioural Safety',
                15 => 'PER1 - Health, Safety, and Wellbeing strategy',16 => 'Testing Comment 1',17 => 'Expected'
                ),
            array(
                0 => '1',1 => 'Lot',2 => 'Lot Submission',3 => 'Lot Submission',4 => 'Lot Submission',
                5 => 'LNW North',6 => 'C Spencer Ltd',7 => 'Panel',8 => '1',9 => 'Buildings',10 => '2015/2016',
                11 => '2',12 => '1,2,3,4,5,6,7,8',13 => 'Testing notes',14 => 'KPI1 - Behavioural Safety',
                15 => 'PMTEST - Test',16 => 'Testing 2',17 => 'Stretch'
                ),
            array(
                0 => '1',1 => 'Lot',2 => 'Lot Submission',3 => 'Lot Submission',4 => 'Lot Submission',
                5 => 'LNW North',6 => 'C Spencer Ltd',7 => 'Panel',8 => '1',9 => 'Buildings',10 => '2015/2016',
                11 => '2',12 => '1,2,3,4,5,6,7,8',13 => 'Testing notes',14 => 'KPI1 - Behavioural Safety',
                15 => 'JP001 - Jamie',16 => 'Testing 3',17 => 'Excellence'
                )
            ),
        array(
            array(
                0 => '2',1 => 'Lot',2 => 'Lot Submission',3 => 'Lot Submission',4 => 'Lot Submission',
                5 => 'LNW North',6 => 'C Spencer Ltd',7 => 'Panel',8 => '1',9 => 'Buildings',10 => '2015/2016',
                11 => '2',12 => '1,2,3,4,5,6,7,8',13 => 'Testing notes',14 => 'KPI1 - Behavioural Safety',
                15 => 'PER1 - Health, Safety, and Wellbeing strategy',16 => 'Testing Comment 1',17 => 'Expected'
                ),
            array(
                0 => '2',1 => 'Lot',2 => 'Lot Submission',3 => 'Lot Submission',4 => 'Lot Submission',
                5 => 'LNW North',6 => 'C Spencer Ltd',7 => 'Panel',8 => '1',9 => 'Buildings',10 => '2015/2016',
                11 => '2',12 => '1,2,3,4,5,6,7,8',13 => 'Testing notes',14 => 'KPI1 - Behavioural Safety',
                15 => 'PMTEST - Test',16 => 'Testing 2',17 => 'Stretch'
                )
        )
);

$new = array();

foreach ( $original as $idx => $old ) {

    foreach ( $old as $occ => $val ) {

        // move over the first 14 from first row
        if ( $occ == 0 ) {
           for( $i=0; $i<14; $i++ ) {
                $new[$idx][] = $old[$occ][$i];
            }
            // setup the new measure array
            $new[$idx]['measure'] = array();
        }

        $t = array();
        for ( $i=14; $i < 16; $i++ ) {
            $t[] = $old[$occ][$i];
        }
        $new[$idx]['measure'][] = $t;

        $t = array();
        for ( $i=16; $i < count($old[$occ]); $i++ ) {
            $t[] = $old[$occ][$i];
        }
        $new[$idx]['measure'][$occ]['comments'] = $t;
    }
}

print_r($new);

哪个产生

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => Lot
            [2] => Lot Submission
            [3] => Lot Submission
            [4] => Lot Submission
            [5] => LNW North
            [6] => C Spencer Ltd
            [7] => Panel
            [8] => 1
            [9] => Buildings
            [10] => 2015/2016
            [11] => 2
            [12] => 1,2,3,4,5,6,7,8
            [13] => Testing notes
            [measure] => Array
                (
                    [0] => Array
                        (
                            [0] => KPI1 - Behavioural Safety
                            [1] => PER1 - Health, Safety, and Wellbeing strategy
                            [comments] => Array
                                (
                                    [0] => Testing Comment 1
                                    [1] => Expected
                                )
                        )
                    [1] => Array
                        (
                            [0] => KPI1 - Behavioural Safety
                            [1] => PMTEST - Test
                            [comments] => Array
                                (
                                    [0] => Testing 2
                                    [1] => Stretch
                                )
                        )
                    [2] => Array
                        (
                            [0] => KPI1 - Behavioural Safety
                            [1] => JP001 - Jamie
                            [comments] => Array
                                (
                                    [0] => Testing 3
                                    [1] => Excellence
                                )
                        )
                )
        )

    [1] => Array
        (
            [0] => 2
            [1] => Lot
            [2] => Lot Submission
            [3] => Lot Submission
            [4] => Lot Submission
            [5] => LNW North
            [6] => C Spencer Ltd
            [7] => Panel
            [8] => 1
            [9] => Buildings
            [10] => 2015/2016
            [11] => 2
            [12] => 1,2,3,4,5,6,7,8
            [13] => Testing notes
            [measure] => Array
                (
                    [0] => Array
                        (
                            [0] => KPI1 - Behavioural Safety
                            [1] => PER1 - Health, Safety, and Wellbeing strategy
                            [comments] => Array
                                (
                                    [0] => Testing Comment 1
                                    [1] => Expected
                                )
                        )
                    [1] => Array
                        (
                            [0] => KPI1 - Behavioural Safety
                            [1] => PMTEST - Test
                            [comments] => Array
                                (
                                    [0] => Testing 2
                                    [1] => Stretch
                                )
                        )
                )
        )
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将数组元素组合在一起

将多个对象数组与不同的键组合在一起

将多个数组与 identica 键和不同的值组合在一起

将列表与列表中不同长度的列表组合在一起

使用Python将列表中的重复JSON键值对组合在一起

使用 SQL 将后续行中的反向对组合在一起

如何将2个Foreach循环与不同的数组结果组合在一起?

如何将向量与列表中的公共成分组合在一起?

将数组数组转换为组合在一起的对象数组

将SQL查询组合在一起

将正确的值组合在一起

将数据聚合/组合在一起

你能把不同的字符串函数组合在一起吗?

将两个不同的表组合在一起进行查询

在Stata中,如何将多个具有不同轴的coefplot组合在一起?

如何使用覆盖挂载将多个目录与不同的子目录组合在一起?

将数组的每个元素与其后面的元素组合在一起

获取将数组和常量组合在一起的哈希

将连续的整数组合在一起

FPDF,FPDI-如何使用PHP将单独的文件与唯一的文本组合在一起?

将数组混合在一起

如何将两个用于名称和值的数组组合在一起以在php中并排对齐

如何将Scala中的每个n元素组合在一起?

将MySQL查询中的类似条目组合在一起

将列表中的元素组合在一起形成新列表

将python中的值组合在一起

如何将 Python 中的值组合在一起?

在Python中,如何将多个轴组合在一起?

将嵌套对象中的值与公共属性组合在一起