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

<?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,
            ],
        ],
    ],
];


《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 5

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

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

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

$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);
5年前 评论
sunny123456 (楼主) 5年前
sunny123456 (楼主) 5年前
岁月流沙 (作者) 5年前
sunny123456 (楼主) 5年前
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);
}
5年前 评论
sunny123456 (楼主) 5年前
sunny123456 (楼主) 5年前
k9606 (作者) 5年前
sunny123456 (楼主) 5年前
k9606 (作者) 5年前
sunny123456 (楼主) 5年前

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

授人以鱼不如授人以渔。

5年前 评论

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