当前位置:Gxlcms > PHP教程 > 二维数组中如何按指定条件合并成一个数组

二维数组中如何按指定条件合并成一个数组

时间:2021-07-01 10:21:17 帮助过:3人阅读

合并数据为一个数组,如果属性相等的则增加数量,商品ID,属性不同的商品则不合并。

如下有两数组,求解该如何按条件合并为一个数组。

  1. <code>$item_1 = array(
  2. [0]=> array(
  3. 'goods_id'=>1,
  4. 'price'=>1,
  5. 'goods_name'=>'商品1',
  6. 'goods_attr_id'=>'1',
  7. 'num'=>1,
  8. ),
  9. [1]=> array(
  10. 'goods_id'=>2,
  11. 'price'=>10,
  12. 'goods_name'=>'测试商品2',
  13. 'goods_attr_id'=>'3',
  14. 'num'=>2,
  15. ),
  16. [2]=> array(
  17. 'goods_id'=>3,
  18. 'price'=>20,
  19. 'goods_name'=>'测试商品3',
  20. 'goods_attr_id'=>'4',
  21. 'num'=>3,
  22. ),
  23. );
  24. $item_2 = array(
  25. [0]=> array(
  26. 'goods_id'=>1,
  27. 'price'=>1,
  28. 'goods_name'=>'商品1',
  29. 'goods_attr_id'=>'1,2',
  30. 'num'=>1,
  31. ),
  32. [1]=> array(
  33. 'goods_id'=>2,
  34. 'price'=>10,
  35. 'goods_name'=>'测试商品2',
  36. 'goods_attr_id'=>'3',
  37. 'num'=>2,
  38. ),
  39. [2]=> array(
  40. 'goods_id'=>4,
  41. 'price'=>30,
  42. 'goods_name'=>'测试商品4',
  43. 'goods_attr_id'=>'5',
  44. 'num'=>1,
  45. ),
  46. );</code>

回复内容:

合并数据为一个数组,如果属性相等的则增加数量,商品ID,属性不同的商品则不合并。

如下有两数组,求解该如何按条件合并为一个数组。

  1. <code>$item_1 = array(
  2. [0]=> array(
  3. 'goods_id'=>1,
  4. 'price'=>1,
  5. 'goods_name'=>'商品1',
  6. 'goods_attr_id'=>'1',
  7. 'num'=>1,
  8. ),
  9. [1]=> array(
  10. 'goods_id'=>2,
  11. 'price'=>10,
  12. 'goods_name'=>'测试商品2',
  13. 'goods_attr_id'=>'3',
  14. 'num'=>2,
  15. ),
  16. [2]=> array(
  17. 'goods_id'=>3,
  18. 'price'=>20,
  19. 'goods_name'=>'测试商品3',
  20. 'goods_attr_id'=>'4',
  21. 'num'=>3,
  22. ),
  23. );
  24. $item_2 = array(
  25. [0]=> array(
  26. 'goods_id'=>1,
  27. 'price'=>1,
  28. 'goods_name'=>'商品1',
  29. 'goods_attr_id'=>'1,2',
  30. 'num'=>1,
  31. ),
  32. [1]=> array(
  33. 'goods_id'=>2,
  34. 'price'=>10,
  35. 'goods_name'=>'测试商品2',
  36. 'goods_attr_id'=>'3',
  37. 'num'=>2,
  38. ),
  39. [2]=> array(
  40. 'goods_id'=>4,
  41. 'price'=>30,
  42. 'goods_name'=>'测试商品4',
  43. 'goods_attr_id'=>'5',
  44. 'num'=>1,
  45. ),
  46. );</code>

  1. <code>foreach ($item_1 as $key => $value) {
  2. $arr[$value['goods_id'].'_'.$value['goods_attr_id']]=$value;
  3. }
  4. foreach ($item_2 as $key => $value) {
  5. if(empty($arr[$value['goods_id'].'_'.$value['goods_attr_id']])){
  6. $arr[$value['goods_id'].'_'.$value['goods_attr_id']]=$value;
  7. }else{
  8. $arr[$value['goods_id'].'_'.$value['goods_attr_id']]['num']=$arr[$value['goods_id'].'_'.$value['goods_attr_id']]['num']+$value['num'];
  9. }
  10. }
  11. var_dump($arr);
  12. </code>

先排序,相同的排在一起,再计数。

看着挺像EC的,先按照goods_id分组,然后去重合并,具体的做法你可以搜搜php数组函数,有很多 你将这个组每个函数都玩一遍 打印看看就学会他们的用途了

人气教程排行