Php 将多维数组转换为另一个具有不同结构的多维数组

Php 将多维数组转换为另一个具有不同结构的多维数组,php,multidimensional-array,Php,Multidimensional Array,我在操作复杂数组时遇到了一些问题,如下所示: Array ( [0] => Array ( [checklist_position] => 8 [checklist_id] => 2 [question_id] => 11 [section] => 1 [sum_a] => 332611 [su

我在操作复杂数组时遇到了一些问题,如下所示:

Array
(
    [0] => Array
        (
            [checklist_position] => 8
            [checklist_id] => 2
            [question_id] => 11
            [section] => 1
            [sum_a] => 332611
            [sum_b] => 566201
        )

    [1] => Array
        (
            [checklist_position] => 9
            [checklist_id] => 2
            [question_id] => 12
            [section] => 1
            [sum_a] => 567725
            [sum_b] => 67301
        )

    [2] => Array
        (
            [checklist_position] => 10
            [checklist_id] => 2
            [question_id] => 13
            [section] => 1
            [sum_a] => 20004
            [sum_b] => 38381
        )

    [3] => Array
        (
            [checklist_position] => 11
            [checklist_id] => 2
            [question_id] => 14
            [section] => 2
            [sum_a] => 699144
            [sum_b] => 139456
        )

    [4] => Array
        (
            [checklist_position] => 12
            [checklist_id] => 2
            [question_id] => 15
            [section] => 2
            [sum_a] => 791204
            [sum_b] => 336133
        )

    [5] => Array
        (
            [checklist_position] => 13
            [checklist_id] => 2
            [question_id] => 16
            [section] => 2
            [sum_a] => 447501
            [sum_b] => 503112
        )

    [6] => Array
        (
            [checklist_position] => 14
            [checklist_id] => 2
            [question_id] => 17
            [section] => 2
            [sum_a] => 651332
            [sum_b] => 803628
        )

)
Array
(
    [0] => Array
        (
            [section] => 1
            [questions] => Array
                (
                    [0] => Array
                        (
                            [checklist_position] => 1
                            [checklist_id] => 1
                            [question_id] => 1
                            [section] => 1
                            [sum_a] => 348659
                            [sum_b] => 273072
                        )

                    [1] => Array
                        (
                            [checklist_position] => 2
                            [checklist_id] => 2
                            [question_id] => 2
                            [section] => 1
                            [sum_a] => 825992
                            [sum_b] => 189190
                        )

                )

        )

    [1] => Array
        (
            [section] => 2
            [questions] => Array
                (
                    [0] => Array
                        (
                            [checklist_position] => 1
                            [checklist_id] => 1
                            [question_id] => 1
                            [section] => 1
                            [sum_a] => 348659
                            [sum_b] => 273072
                        )

                    [1] => Array
                        (
                            [checklist_position] => 2
                            [checklist_id] => 2
                            [question_id] => 2
                            [section] => 1
                            [sum_a] => 825992
                            [sum_b] => 189190
                        )

                )

        )

)
我要做的是将其转换为如下数组:

Array
(
    [0] => Array
        (
            [checklist_position] => 8
            [checklist_id] => 2
            [question_id] => 11
            [section] => 1
            [sum_a] => 332611
            [sum_b] => 566201
        )

    [1] => Array
        (
            [checklist_position] => 9
            [checklist_id] => 2
            [question_id] => 12
            [section] => 1
            [sum_a] => 567725
            [sum_b] => 67301
        )

    [2] => Array
        (
            [checklist_position] => 10
            [checklist_id] => 2
            [question_id] => 13
            [section] => 1
            [sum_a] => 20004
            [sum_b] => 38381
        )

    [3] => Array
        (
            [checklist_position] => 11
            [checklist_id] => 2
            [question_id] => 14
            [section] => 2
            [sum_a] => 699144
            [sum_b] => 139456
        )

    [4] => Array
        (
            [checklist_position] => 12
            [checklist_id] => 2
            [question_id] => 15
            [section] => 2
            [sum_a] => 791204
            [sum_b] => 336133
        )

    [5] => Array
        (
            [checklist_position] => 13
            [checklist_id] => 2
            [question_id] => 16
            [section] => 2
            [sum_a] => 447501
            [sum_b] => 503112
        )

    [6] => Array
        (
            [checklist_position] => 14
            [checklist_id] => 2
            [question_id] => 17
            [section] => 2
            [sum_a] => 651332
            [sum_b] => 803628
        )

)
Array
(
    [0] => Array
        (
            [section] => 1
            [questions] => Array
                (
                    [0] => Array
                        (
                            [checklist_position] => 1
                            [checklist_id] => 1
                            [question_id] => 1
                            [section] => 1
                            [sum_a] => 348659
                            [sum_b] => 273072
                        )

                    [1] => Array
                        (
                            [checklist_position] => 2
                            [checklist_id] => 2
                            [question_id] => 2
                            [section] => 1
                            [sum_a] => 825992
                            [sum_b] => 189190
                        )

                )

        )

    [1] => Array
        (
            [section] => 2
            [questions] => Array
                (
                    [0] => Array
                        (
                            [checklist_position] => 1
                            [checklist_id] => 1
                            [question_id] => 1
                            [section] => 1
                            [sum_a] => 348659
                            [sum_b] => 273072
                        )

                    [1] => Array
                        (
                            [checklist_position] => 2
                            [checklist_id] => 2
                            [question_id] => 2
                            [section] => 1
                            [sum_a] => 825992
                            [sum_b] => 189190
                        )

                )

        )

)
问题是我不知道从哪里开始,任何提示都非常感谢


谢谢大家!

在数组的键中使用节号可能会少一些麻烦,例如(问题的第一个数组是$array1):


还没有签出,但应该可以。Patroklo的解决方案简化了:

$result = array();
foreach($array1 as $data){
    $section = $data['section'];
    $result[$section]['section'] = $section;
    $result[$section]['questions'][] = $data;
}

$result = array_values($result); // to re order

$array1是包含当前数据的数组,$result是您所期望的

从循环原始数组开始,然后创建一个新数组。那么模式是什么呢?分割阵列碎片(每个2个阵列)并用不同的结构创建新阵列?@safarov,是的,我想用我在上面发布的结构创建一个新阵列。我想你缺少了一些括号。我确实得到了一些输出,但它并没有达到预期的效果。哦,你是说像$array1=$original_数组[0]?不,$array1=$original_数组;你只需要循环它,唯一的区别是在最后的数组中,而不是像->0,1,2,3这样的键。。。他们会说:1,2谢谢你,萨弗拉兹先生。输出与预期一致。还有一个问题。$result可以从0开始吗?现在它从1开始-再次检查答案-我编辑了它。当做