关于若干数组组合的问题 PHP

主要是用于商品多规格时候 规格的组合,比如选择规格颜色:蓝色,红色,风格:卡通,动漫,在php 处理中要组合蓝色卡通;蓝色动漫,红色卡通,红色动漫,或者有更多的规格项怎么组合的问题。上代码,如下数组格式


规格数组格式

想要得到如下的组合


想要的结果

这试试两个子数组,可能或有更多规格组成更多的数组

1.先将数组安装id键值将同样id的数组集合在一起

    foreach ($data as $key => $value) {

            $items[$value['id']][] = $value;

        }

        $items = array_values($items);

2.将转化的数组一一组合

private function __changeSpecData($data){

        $count = count($data);

        if ($count >= 2) {

            $count1 = count($data[0]);

            $count2 = count($data[1]);

            $newcount = $count1 * $count2;

            $temp = [];

            $index = 0;

            for ($i = 0; $i < $count1; $i++) {

                for ( $j = 0; $j < $count2; $j++) {

                    if(count($data[0][$i]) == count($data[0][$i],1)){

                        $temp[$index] = [$data[0][$i],$data[1][$j]];

                    }else{

                        $row = $data[0][$i];

                        $row[] = $data[1][$j];

                        $temp[$index] = $row; 

                        unset($row); 

                    }

                    $index++;

                }

            } 

            $newArray[0] = $temp;

            for ( $i = 2; $i < $count; $i++){

                $newArray[$i - 1] = $data[$i];

            }

            return $this->__changeSpecData($newArray);//递归循环数组

        }

        else{

            return $data[0];

        }

    }


瑾记录一下 有更好的办法请指正

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。