当前位置 主页 > 网站技术 > 代码类 >

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

    栏目:代码类 时间:2019-10-14 06:03

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

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

    需求

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

    数组a

    Array
    (
      [0] => Array
        (
          [date] => 2019-04-02
          [today_pay_money] => 168.00
          [today_pay_num] => 1
          [yesterday_pay_money] => 999.00
          [yesterday_pay_num] => 1
        )
      [1] => Array
        (
          [date] => 2019-04-09
          [today_pay_money] => 0.01
          [today_pay_num] => 1
          [yesterday_pay_money] => 0.00
          [yesterday_pay_num] => 0
        )
      [2] => Array
        (
          [date] => 2019-05-05
          [today_pay_money] => 0.01
          [today_pay_num] => 1
          [yesterday_pay_money] => 2.00
          [yesterday_pay_num] => 1
        )
      [3] => Array
        (
          [date] => 2019-05-11
          [today_pay_money] => 0.00
          [today_pay_num] => 0
          [yesterday_pay_money] =>
          [yesterday_pay_num] => 1
        )
    )
    
    

    数组B

    Array
    (
      [0] => Array
        (
          [date] => 2019-05-07
          [today_pay_money1] => 0
          [today_pay_num1] => 0
          [yesterday_pay_money1] => 0
          [yesterday_pay_num1] => 0
        )
      [1] => Array
        (
          [date] => 2019-05-11
          [today_pay_money1] => 0
          [today_pay_num1] => 0
          [yesterday_pay_money1] => 1
          [yesterday_pay_num1] => 1
        )
    )
    
    

    需要格式

    Array
    (
      [2019-04-02] => Array
        (
          [date] => 2019-04-02
          [today_pay_money] => 168.00
          [today_pay_num] => 1
          [yesterday_pay_money] => 999.00
          [yesterday_pay_num] => 1
        )
      [2019-04-09] => Array
        (
          [date] => 2019-04-09
          [today_pay_money] => 0.01
          [today_pay_num] => 1
          [yesterday_pay_money] => 0.00
          [yesterday_pay_num] => 0
        )
      [2019-05-05] => Array
        (
          [date] => 2019-05-05
          [today_pay_money] => 0.01
          [today_pay_num] => 1
          [yesterday_pay_money] => 2.00
          [yesterday_pay_num] => 1
        )
      [2019-05-11] => Array
        (
          [date] => 2019-05-11
          [today_pay_money] => 0.00
          [today_pay_num] => 0
          [yesterday_pay_money] =>
          [yesterday_pay_num] => 1
          [today_pay_money1] => 0
          [today_pay_num1] => 0
          [yesterday_pay_money1] => 1
          [yesterday_pay_num1] => 1
        )
      [2019-05-07] => Array
        (
          [date] => 2019-05-07
          [today_pay_money1] => 0
          [today_pay_num1] => 0
          [yesterday_pay_money1] => 0
          [yesterday_pay_num1] => 0
        )
    )
    
    

    代码实现

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

    $total = array_merge($a,$b));
    $res = array();
    foreach ($total as $k => $v) {
      if (empty($res[$v['date']]))
      $res[$v['date']] = $v;
      else
      $res[$v['date']]= array_merge($res[$v['date']],$v);
    }