PHP实现数组根据某个字段进行水平合并,横向合并案例分析
本文实例讲述了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 (emptyempty($res[$v['date']]))
- $res[$v['date']] = $v;
- else
- $res[$v['date']]= array_merge($res[$v['date']],$v);
- }