把aa1数组转换成aa2数组 $aa1 = [ '0'=>[ 'aa'=>'1', 'bb'=>'2', ], '1'=>[ 'aa'=>'1', 'bb'=>'3', ], ]; $aa2 = [ '0'=>[ 'aa'=>'1', 'cc'=>[ "0"=>[ 'bb'=>'2', ], "1"=>[ "bb"=>"3", ] ], ] ]; 操作如下: $new_arr = array(); $img_arr = array(); foreach($list as $v) { if(!isset($new_arr[$v['id']]) && !isset($new_arr[$v['id']]['shop']) && !isset($new_arr[$v['id']]['sort']) && !isset($new_arr[$v['id']]['name']) && !isset($new_arr[$v['id']]['new_price']) && !isset($new_arr[$v['id']]['old_price']) && !isset($new_arr[$v['id']]['specs']) && !isset($new_arr[$v['id']]['number']) && !isset($new_arr[$v['id']]['details']) && !isset($new_arr[$v['id']]['label'])){ $new_arr[$v['id']]['id']=$v['id']; //商品id $new_arr[$v['id']]['shop']=$v['shop'];//所属商店 $new_arr[$v['id']]['sort']=$v['sort'];//所属分类 $new_arr[$v['id']]['name']=$v['name'];//商品名称 $new_arr[$v['id']]['new_price']=$v['new_price'];//最新价格 $new_arr[$v['id']]['old_price']=$v['old_price'];//原价格 $new_arr[$v['id']]['specs']=$v['specs'];//商品规格 $new_arr[$v['id']]['number']=$v['number'];//商品库存 $new_arr[$v['id']]['details']=$v['details'];//商品详情 $new_arr[$v['id']]['label']=$v['label'];//商品标签 } if(!isset($img_arr[$v['img_id']]) && !isset($img_arr[$v['img_id']]['goods_id']) && !isset($img_arr[$v['img_id']]['url']) && !isset($img_arr[$v['img_id']]['is_main'])){ $img_arr[$v['img_id']-1]['img_id'] = $v['img_id']; //图片id $img_arr[$v['img_id']-1]['goods_id']=$v['goods_id'];//商品id $img_arr[$v['img_id']-1]['url']=$v['url'];//图片路径 $img_arr[$v['img_id']-1]['is_main']=$v['is_main'];//是否为主图 } foreach ($img_arr as $kk=>$vv){ if($new_arr[$v['id']]['id'] == $vv['goods_id']){ $new_arr[$v['id']]['images'][$kk] = $img_arr[$kk]; } } } $new_arr = array_values($new_arr); foreach ($new_arr as $k=>$v){ $keys = range(0, count($new_arr[$k]['images'])-1);//重新生成指定范围的数组 $new_arr[$k]['images'] = array_combine($keys, array_values($new_arr[$k]['images']));//将键和值重新组合,形成新数组 }
有没有更好的方法吗?