一、前言

在实际情况中,有时需要针对多维数组相同键值作相应的处理(四则运算、比较大小等)后才能够使用到实际情况中,现给出三维数组(多维数组可相应拓展)任意多个相同键值处理的函数,以备查阅。

二、代码

 <?php
//任意多个相同键值的数组合并
//预先将所要合并的数组组装成一个新的数组 $arr = array(
'1' => array(
'1' => array(
"channelName" => "渠道1",
"firstRegisterTime" => "2018-12-20 10:23:57",
"firstChargeNum" => 168,
),
'2' => array(
"channelName" => "渠道2",
"firstRegisterTime" => "2018-12-20 10:23:57",
"firstChargeNum" => 127,
),
'3' => array(
"channelName" => "渠道3",
"firstRegisterTime" => "2018-12-10 11:23:57",
"firstChargeNum" => 69,
),
),
'2' => array(
'1' => array(
"channelName" => "渠道1",
"firstRegisterTime" => "2017-12-29 10:23:57",
"firstChargeNum" => 798,
),
'2' => array(
"channelName" => "渠道2",
"firstRegisterTime" => "2018-12-20 10:23:57",
"firstChargeNum" => 985,
),
'3' => array(
"channelName" => "渠道3",
"firstRegisterTime" => "2017-12-20 11:23:57",
"firstChargeNum" => 54,
),
),
);
print_r($arr);
$result = arr_format($arr);
print_r($result); /**
* [comm_sumarrs 多维数组相同键值处理合并]
* @param [array] $data [原始数据]
* @return [array] $res [合并完数据]
*
*/
function arr_format($arr){
$res = array();
// 三维数组,循环三次(foreach)
foreach ( $arr as $key => $value ) {
foreach( $value as $k=>$v ){
foreach ( $v as $k1 => $v1 ) { // 循环具体键值
if ( isset($res[$k][$k1]) ){
if ( $k1 == 'firstRegisterTime' ) { // 相同键值时间戳比较,更新为最早的
if( strtotime($v1) < strtotime($res[$k][$k1]) ){
$res[$k][$k1] = $v1;
}
}
if ( $k1 == 'firstChargeNum' ) { // 相同键值相加
$res[$k][$k1] += $v1;
}
}else{
$res[$k][$k1] = $v1;
}
}
}
}
return $res;
} ?>

三、运行结果

处理前数组:

 Array
(
[1] => Array
(
[1] => Array
(
[channelName] => 渠道1
[firstRegisterTime] => 2018-12-20 10:23:57
[firstChargeNum] => 168
) [2] => Array
(
[channelName] => 渠道2
[firstRegisterTime] => 2018-12-20 10:23:57
[firstChargeNum] => 127
) [3] => Array
(
[channelName] => 渠道3
[firstRegisterTime] => 2018-12-10 11:23:57
[firstChargeNum] => 69
) ) [2] => Array
(
[1] => Array
(
[channelName] => 渠道1
[firstRegisterTime] => 2017-12-29 10:23:57
[firstChargeNum] => 798
) [2] => Array
(
[channelName] => 渠道2
[firstRegisterTime] => 2018-12-20 10:23:57
[firstChargeNum] => 985
) [3] => Array
(
[channelName] => 渠道3
[firstRegisterTime] => 2017-12-20 11:23:57
[firstChargeNum] => 54
) ) )

处理后数组:

Array
(
[1] => Array
(
[channelName] => 渠道1
[firstRegisterTime] => 2017-12-29 10:23:57
[firstChargeNum] => 966
) [2] => Array
(
[channelName] => 渠道2
[firstRegisterTime] => 2018-12-20 10:23:57
[firstChargeNum] => 1112
) [3] => Array
(
[channelName] => 渠道3
[firstRegisterTime] => 2017-12-20 11:23:57
[firstChargeNum] => 123
) )

最新文章

  1. 【2016-10-27】【坚持学习】【Day14】【GlobalAssemblyInfo 】
  2. HTML 水平线&lt;hr/&gt;标签
  3. C#中out和ref之间的区别
  4. objective-C运算符和表达式
  5. Some_sort_algorithms
  6. redis的图形界面管理工具:phpredisadmin
  7. day05
  8. Linux下运行C++程序出现&quot;段错误(核心已转储)&quot;的原因
  9. python使用post登陆电子科大信息门户并保存登陆后页面
  10. linux配置加载顺序
  11. 安装Linux_[CentOS]系统
  12. webpack的四大核心概念
  13. input输入框限制输入正整数、小数、字母、文字
  14. windows 7安装Fiddler抓HTTPS请求的解决办法
  15. vue-cli3 中跨域解决方案
  16. android屏蔽系统锁屏的办法
  17. Windows 如何备份恢复Ubuntu系统文件
  18. SQL 同一张表中相同字段的内容合并为一条记录(不同字段的那一列每个记录后面加逗号)
  19. Python list 函数
  20. 创建数据表,自定义data element, field等。

热门文章

  1. IDEA中的一些常用的设置与快捷键
  2. html实现钝角效果;html实现限制一行字数的显示,超出的部分用省略号(....)来代替
  3. 关于css实现单行、多行省略标记
  4. (七)JavaScript之[调试]与[前端表单验证]
  5. Java笔记 —— 继承
  6. python模块介绍和 import本质
  7. DIV命名规范
  8. vue-表单绑定
  9. PDO数据库类——对query()和exec()的异常监听
  10. replace into 浅析