php二维数组根据某个字段分组

我们要实现的功能是根据某个二维数组相同的值合并成一个新的三维数组

二维数组:


Array
(
    [6] => Array
        (
            [id] => 15
            [cate1] => 1
            [cate2] => 3
            [name] => 测试测试
            [unit] => 1
            [guidePrice] => 222.00
            [cate1name] => 产品标配
            [cate2name] => 棚面
        )

    [7] => Array
        (
            [id] => 16
            [cate1] => 1
            [cate2] => 3
            [name] => 1
            [unit] => 1
            [guidePrice] => 1.00
            [cate1name] => 产品标配
            [cate2name] => 棚面
        )

    [8] => Array
        (
            [id] => 17
            [cate1] => 4
            [cate2] => 7
            [name] => 打完
            [unit] => 米
            [guidePrice] => 32.00
            [cate1name] => 施工升级
            [cate2name] => 门
        )

    [9] => Array
        (
            [id] => 18
            [cate1] => 5
            [cate2] => 8
            [name] => 为单位
            [unit] => 米
            [guidePrice] => 22.00
            [cate1name] => 材料升级
            [cate2name] => 地板
        )

    [10] => Array
        (
            [id] => 19
            [cate1] => 6
            [cate2] => 9
            [name] => 反倒是
            [unit] => 米
            [guidePrice] => 122.00
            [cate1name] => 活动包
            [cate2name] => 阳台
        )

)

我们把 cate1name相同的值拿出来形成一个新的三维数组

代码如下:

//$list为上面的二维数组
$newArray=array();
foreach($list as $v){
    $newArray[$v['cate1name']][]=$v;
}

结果(三维数组):


Array
(
    [产品标配] => Array
        (
            [0] => Array
                (
                    [id] => 15
                    [cate1] => 1
                    [cate2] => 3
                    [name] => 测试测试
                    [unit] => 1
                    [guidePrice] => 222.00
                    [cate1name] => 产品标配
                    [cate2name] => 棚面
                )

            [1] => Array
                (
                    [id] => 16
                    [cate1] => 1
                    [cate2] => 3
                    [name] => 1
                    [unit] => 1
                    [guidePrice] => 1.00
                    [cate1name] => 产品标配
                    [cate2name] => 棚面
                )

        )

    [施工升级] => Array
        (
            [0] => Array
                (
                    [id] => 17
                    [cate1] => 4
                    [cate2] => 7
                    [name] => 打完
                    [unit] => 米
                    [guidePrice] => 32.00
                    [cate1name] => 施工升级
                    [cate2name] => 门
                )

        )

    [材料升级] => Array
        (
            [0] => Array
                (
                    [id] => 18
                    [cate1] => 5
                    [cate2] => 8
                    [name] => 为单位
                    [unit] => 米
                    [guidePrice] => 22.00
                    [cate1name] => 材料升级
                    [cate2name] => 地板
                )

        )

    [活动包] => Array
        (
            [0] => Array
                (
                    [id] => 19
                    [cate1] => 6
                    [cate2] => 9
                    [name] => 反倒是
                    [unit] => 米
                    [guidePrice] => 122.00
                    [cate1name] => 活动包
                    [cate2name] => 阳台
                )

        )

)

 

你可能感兴趣的:(php)