主要是用于商品多规格时候 规格的组合,比如选择规格颜色:蓝色,红色,风格:卡通,动漫,在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];
}
}
瑾记录一下 有更好的办法请指正