当前位置:首页 > PHP教程 > php数组 > 列表

PHP实现数组根据某个字段进行水平合并,横向合并案例分析

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-27 15:19:44 浏览: 评论:0 

本文实例讲述了PHP实现数组根据某个字段进行水平合并,横向合并。分享给大家供大家参考,具体如下:

PHP数组水平合并,横向合并,两条数据合并成一行

需求

将两个素组中日期相同的合并成一行

数组a

  1. Array 
  2.   [0] => Array 
  3.     ( 
  4.       [date] => 2019-04-02 
  5.       [today_pay_money] => 168.00 
  6.       [today_pay_num] => 1 
  7.       [yesterday_pay_money] => 999.00 
  8.       [yesterday_pay_num] => 1 
  9.     ) 
  10.   [1] => Array 
  11.     ( 
  12.       [date] => 2019-04-09 
  13.       [today_pay_money] => 0.01 
  14.       [today_pay_num] => 1 
  15.       [yesterday_pay_money] => 0.00 
  16.       [yesterday_pay_num] => 0 
  17.     ) 
  18.   [2] => Array 
  19.     ( 
  20.       [date] => 2019-05-05 
  21.       [today_pay_money] => 0.01 
  22.       [today_pay_num] => 1 
  23.       [yesterday_pay_money] => 2.00 
  24.       [yesterday_pay_num] => 1 
  25.     ) 
  26.   [3] => Array 
  27.     ( 
  28.       [date] => 2019-05-11 
  29.       [today_pay_money] => 0.00 
  30.       [today_pay_num] => 0 
  31.       [yesterday_pay_money] => 
  32.       [yesterday_pay_num] => 1 
  33.     ) 

数组B

  1. Array 
  2.   [0] => Array 
  3.     ( 
  4.       [date] => 2019-05-07 
  5.       [today_pay_money1] => 0 
  6.       [today_pay_num1] => 0 
  7.       [yesterday_pay_money1] => 0 
  8.       [yesterday_pay_num1] => 0 
  9.     ) 
  10.   [1] => Array 
  11.     ( 
  12.       [date] => 2019-05-11 
  13.       [today_pay_money1] => 0 
  14.       [today_pay_num1] => 0 
  15.       [yesterday_pay_money1] => 1 
  16.       [yesterday_pay_num1] => 1 
  17.     ) 

需要格式

  1. Array 
  2.   [2019-04-02] => Array 
  3.     ( 
  4.       [date] => 2019-04-02 
  5.       [today_pay_money] => 168.00 
  6.       [today_pay_num] => 1 
  7.       [yesterday_pay_money] => 999.00 
  8.       [yesterday_pay_num] => 1 
  9.     ) 
  10.   [2019-04-09] => Array 
  11.     ( 
  12.       [date] => 2019-04-09 
  13.       [today_pay_money] => 0.01 
  14.       [today_pay_num] => 1 
  15.       [yesterday_pay_money] => 0.00 
  16.       [yesterday_pay_num] => 0 
  17.     ) 
  18.   [2019-05-05] => Array 
  19.     ( 
  20.       [date] => 2019-05-05 
  21.       [today_pay_money] => 0.01 
  22.       [today_pay_num] => 1 
  23.       [yesterday_pay_money] => 2.00 
  24.       [yesterday_pay_num] => 1 
  25.     ) 
  26.   [2019-05-11] => Array 
  27.     ( 
  28.       [date] => 2019-05-11 
  29.       [today_pay_money] => 0.00 
  30.       [today_pay_num] => 0 
  31.       [yesterday_pay_money] => 
  32.       [yesterday_pay_num] => 1 
  33.       [today_pay_money1] => 0 
  34.       [today_pay_num1] => 0 
  35.       [yesterday_pay_money1] => 1 
  36.       [yesterday_pay_num1] => 1 
  37.     ) 
  38.   [2019-05-07] => Array 
  39.     ( 
  40.       [date] => 2019-05-07 
  41.       [today_pay_money1] => 0 
  42.       [today_pay_num1] => 0 
  43.       [yesterday_pay_money1] => 0 
  44.       [yesterday_pay_num1] => 0 
  45.     ) 

代码实现

先将a,b数组合并,判断当前日期下是否空,空的话直接赋值,不空的话,将已有素组和当前数组合并

  1. $total = array_merge($a,$b)); 
  2. $res = array(); 
  3. foreach ($total as $k => $v) { 
  4.   if (emptyempty($res[$v['date']])) 
  5.   $res[$v['date']] = $v
  6.   else 
  7.   $res[$v['date']]= array_merge($res[$v['date']],$v); 
  8. }

Tags: PHP数组水平合并 PHP数组合并

分享到: