这个数组怎么转换呀,求救

<?php

$a=[
    '0'=>[
        'a'=>'1',
        'b'=>'1',
        'c'=>'1',
    ],
    '1'=>[
        'a'=>'1',
        'b'=>'2',
        'c'=>'2',
    ],
    '2'=>[
        'a'=>'3',
        'b'=>'3',
        'c'=>'3',
    ],
];

#转化成下面的结构

$res=[
    '0'=>[
        'a'=>'1',
        'c'=>[
            '0'=>[
                'b'=>1,
                'c'=>1,
            ],
            '1'=>[
                'b'=>2,
                'c'=>2,
            ],
        ],
    ],
    '1'=>[
        'a'=>'3',
        'c'=>[
            '0'=>[
                'b'=>3,
                'c'=>3,
            ],
        ],
    ],
];


《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

你想做得类似于规格属性集合吧 笛卡尔积 了解一下

3年前 评论
sunny123456 (楼主) 3年前
岁月流沙

暴力循环就好了,试了下集合处理也不太方便,集合要循环两次,不太好,可能有更好的集合处理方法我没找到

$result = [];
foreach ($a as $key => $value) {
    if (isset($result[$value['a']])) {
        $result[$value['a']]['c'][] = ['b' => $value['b']];
    } else {
        $result[$value['a']] = ['a' => $value['a'], 'c' => [['b' => $value['b']]]];
    }
}
$result = array_values($result);
3年前 评论
sunny123456 (楼主) 3年前
sunny123456 (楼主) 3年前
岁月流沙 (作者) 3年前
sunny123456 (楼主) 3年前
function tmp()
{
    $a = [
        '0' => [
            'a' => '1',
            'b' => '1',
        ],
        '1' => [
            'a' => '1',
            'b' => '2',
        ],
        '2' => [
            'a' => '3',
            'b' => '3',
        ],
    ];

    $handleA = array_unique(array_column($a, 'a'));

    $res = [];
    foreach ($handleA as $handleAK => $handleAV) {
        $res[$handleAK]['a'] = $handleAV;
        foreach ($a as $ak => $av) {
            if ($av['a'] == $handleAV) {
                $res[$handleAK]['c'][]['b'] = $av['b'];
            }
        }
    }

    print_r($res);
}
3年前 评论
sunny123456 (楼主) 3年前
sunny123456 (楼主) 3年前
k9606 (作者) 3年前
sunny123456 (楼主) 3年前
k9606 (作者) 3年前
sunny123456 (楼主) 3年前

别人不可能帮你一步到位,只能给你提供思路。

授人以鱼不如授人以渔。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!