为了账号安全,请及时绑定邮箱和手机立即绑定

php 双重foreach的坑

php 双重foreach的坑

holdtom 2019-05-21 16:23:08
$cardInfo的JSON格式如下{"code":1,"msg":"success","time":1524036614,"data":{"list":[{"id":1000,"user_id":1,"live_hoster_id":1,"goods_id":1,"goods_unit":"个","goods_num":1,"goods_price_id":2,"create_time":0,"update_time":0,"is_delete":0,"delete_time":null,"business_id":1,"shop":"测试商家1","goodsInfo":{"id":1,"name":"测试商品1","sku":"00000000","category_id":0,"business_id":1,"sale_status":1,"sort":0,"price":"0.00","stock_num":0,"saled_num":0,"thumbnail":"","create_time":0,"update_time":0,"is_delete":0,"delete_time":null,"priceInfo":{"id":2,"price":"80.00","sale_price":"60.00","host_per":"10.00","update_time":0,"is_delete":0,"delete_time":null}}},{"id":1001,"user_id":1,"live_hoster_id":1,"goods_id":2,"goods_unit":"个","goods_num":1,"goods_price_id":1,"create_time":0,"update_time":0,"is_delete":0,"delete_time":null,"business_id":2,"shop":"测试商家2","goodsInfo":{"id":2,"name":"测试商品2","sku":"00000000","category_id":0,"business_id":2,"sale_status":1,"sort":0,"price":"0.00","stock_num":0,"saled_num":0,"thumbnail":"","create_time":0,"update_time":0,"is_delete":0,"delete_time":null,"priceInfo":{"id":1,"price":"100.00","sale_price":"99.00","host_per":"20.00","update_time":0,"is_delete":0,"delete_time":null}}},{"id":1002,"user_id":1,"live_hoster_id":1,"goods_id":3,"goods_unit":"个","goods_num":1,"goods_price_id":3,"create_time":0,"update_time":0,"is_delete":0,"delete_time":null,"business_id":2,"shop":"测试商家2","goodsInfo":{"id":3,"name":"测试商品3","sku":"00000000","category_id":0,"business_id":2,"sale_status":1,"sort":0,"price":"0.00","stock_num":0,"saled_num":0,"thumbnail":"","create_time":0,"update_time":0,"is_delete":0,"delete_time":null,"priceInfo":{"id":3,"price":"200.00","sale_price":"180.00","host_per":"20.00","update_time":0,"is_delete":0,"delete_time":null}}}]}}想变换数组结构为{"code":1,"msg":"success","time":1524036789,"data":{"list":[{"shop_id":1,"shop_name":"测试商家1","goodsInfo":[{goods1},{goods2}]},{"shop_id":2,"shop_name":"测试商家2","goodsInfo":[{goods3},{goods4}]}]}}于是有了如下代码$cartInfo=collection($cartItems)->toArray();$shops=array_column($cartInfo,'shopInfo','business_id');$shop_list=[];$shop_lists=[];foreach($shopsas$key=>$shop){foreach($cartInfoas$k=>$item){if($item['business_id']===$key&&$item['shopInfo']['id']===$key){$shop_list['shop_id']=$item['business_id'];$shop_list['shop_name']=$item['shopInfo']['name'];$shop_list['goodsInfo'][]=$item['goodsInfo'];}}$shop_lists[]=$shop_list;}return$shop_lists;但是出来的结果却是{"code":1,"msg":"success","time":1524036931,"data":{"list":[{"shop_id":1,"shop_name":"测试商家1","goodsInfo":[{"id":1,"name":"测试商品1","sku":"00000000","category_id":0,"business_id":1,"sale_status":1,"sort":0,"price":"0.00","stock_num":0,"saled_num":0,"thumbnail":"","create_time":0,"update_time":0,"is_delete":0,"delete_time":null,"priceInfo":{"id":2,"price":"80.00","sale_price":"60.00","host_per":"10.00","update_time":0,"is_delete":0,"delete_time":null}}]},{"shop_id":2,"shop_name":"测试商家2","goodsInfo":[{"id":1,"name":"测试商品1","sku":"00000000","category_id":0,"business_id":1,"sale_status":1,"sort":0,"price":"0.00","stock_num":0,"saled_num":0,"thumbnail":"","create_time":0,"update_time":0,"is_delete":0,"delete_time":null,"priceInfo":{"id":2,"price":"80.00","sale_price":"60.00","host_per":"10.00","update_time":0,"is_delete":0,"delete_time":null}},{"id":2,"name":"测试商品2","sku":"00000000","category_id":0,"business_id":2,"sale_status":1,"sort":0,"price":"0.00","stock_num":0,"saled_num":0,"thumbnail":"","create_time":0,"update_time":0,"is_delete":0,"delete_time":null,"priceInfo":{"id":1,"price":"100.00","sale_price":"99.00","host_per":"20.00","update_time":0,"is_delete":0,"delete_time":null}},{"id":3,"name":"测试商品3","sku":"00000000","category_id":0,"business_id":2,"sale_status":1,"sort":0,"price":"0.00","stock_num":0,"saled_num":0,"thumbnail":"","create_time":0,"update_time":0,"is_delete":0,"delete_time":null,"priceInfo":{"id":3,"price":"200.00","sale_price":"180.00","host_per":"20.00","update_time":0,"is_delete":0,"delete_time":null}}]}]}}也就是在商家2里面所有商品都进去了。实际上商家1有一个商品,商家2有2个商品求问大佬们这是个什么情况?怎么解决?
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

$shop_lists=[];
foreach($cardInfo['data']['list']as$v){
if(empty($shop_lists[$v['business_id']])){
$shop_lists[$v['business_id']]['shop_id']=$v['business_id'];
$shop_lists[$v['business_id']]['shop_name']=$v['goodsInfo']['name'];
}
$shop_lists[$v['business_id']]['goodsInfo'][]=$v['goodsInfo'];
}
$cardInfo['data']['list']=$shop_lists;
应该是你想要的答案
                            
查看完整回答
反对 回复 2019-05-21
  • 2 回答
  • 0 关注
  • 389 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信