php教程

超轻量级php框架startmvc

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

更新时间:2020-04-09 13:25:46 作者:startmvc
本文实例讲述了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 (empty($res[$v['date']]))
 $res[$v['date']] = $v;
 else
 $res[$v['date']]= array_merge($res[$v['date']],$v);
}

PHP 数组 字段 水平合并 横向合并