PHP 自定义方法实现数组合并
在PHP中提供了强大的数组功能,对于数组的合并也提供了两个方法:array_merge 和 array_merge_recursive
$ar1 = array("color"=> array("favorite"=>"red","name"=>"test"));
$ar2 = array("color"=> array("favorite"=>"green","code"=>"code"));
print_r (array_merge ($ar1, $ar2));
print_r(array_merge_recursive ($ar1, $ar2));

/**
* @Author: HTL
* @Email: Huangyuan413026@163.com
* @DateTime: 2016-04-21 12:01:51
* @Description: 根据指定的健名将$ar2中的所有健值复制到$ar1对应的健值中
* @Return:$ar1
*/
function array_more_merge($ar1,$ar2,$key_name){
if(
!$ar1
|| !is_array($ar1)
|| count($ar1)<=0
|| !$ar2
|| !is_array($ar2)
|| count($ar2)<=0
|| !$key_name
|| strlen($key_name)<=0)
{
return $ar1;
}
/*不能使用for进行循环,因为如果数组中的索引不是连续的则使用for可能无法正确的完成循环
如 $a =
Array(
1 => Array("id" => 1 )
,8 => Array("id" => 2 )
,4 => Array("id" => 4 )
);
该数组数为3所以只能找到[1],而[8][4]在循环中不会进行处理,因为$i <=count($a)不成立
*/
for ($i=0; $i <=count($a) ; $i++) {
print_r($a[$i]);
}
foreach ($ar1 as $i=>$items) {
foreach ($ar2 as $key=>$item) {
if($ar2[$key][$key_name]==$ar1[$i][$key_name]){
$keys = array_keys($ar2[$key]);
foreach ($keys as $name) {
$ar1[$i][$name] = $ar2[$key][$name];
}
}
}
}
return $ar1;
}
$ar1 = '{"1":{"cost":"1","id":"1","total_price":"5"},"2":{"cost":"2","id":"2","total_price":"10"},"4":{"cost":"4","id":"4","total_price":"20"}}';
$ar1 = json_decode($ar1,true);
$ar2 = '{"1":{"cost":"1","id":"1","total_price":"5"},"2":{"cost":"20","id":"2","total_price":"100"},"4":{"cost":"40","id":"4","total_price":"200"}}';
$ar2 = json_decode($ar2,true); echo "array_merge_recursive:";
print_r(array_merge_recursive($ar1,$ar2)); echo "array_merge:";
print_r(array_merge($ar1,$ar2)); echo "array_more_merge:";
print_r($this->array_more_merge($ar1,$ar2,"id")); die();

PHP 自定义方法实现数组合并的更多相关文章
- go语言:多个[]byte数组合并成一个[]byte
场景:在开发中,要将多个[]byte数组合并成一个[]byte,初步实现思路如下: 1.获取多个[]byte长度 2.构造一个二维码数组 3.循环将[]byte拷贝到二维数组中 package gst ...
- 论php数组合并
注:尽量不要在循环中操作数据库. 1.两个一维数组合并成一个一维数组 $a = array('morning','afternoon','night'); $b = array('breakfast' ...
- PHP数组合并+与array_merge的区别分析 & 对多个数组合并去重技巧
PHP中两个数组合并可以使用+或者array_merge,但之间还是有区别的,而且这些区别如果了解不清楚项目中会要命的! 主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意 ...
- JS数组键值,数组合并,
eg: var arr = [] arr.test = '测试'; arr.push(1); arr.push(2); arr.obj = '对象'; console.log(arr);// [ 1, ...
- PHP数组合并 array_merge 与 + 的差异
在PHP数组合并出过几次问题都没记住,写下来加强一点记忆 PHP数组在合并时,使用 array_merge 与 + 的差异: 1.array_merge(array $array1 [, array ...
- Python数组合并
Python数组合并 a = [1, 2] b = [3, 4] c = a + b print(c) # [1, 2, 3, 4]
- PHP数组合并的常见问题
一维数组的合并 <?php $arr1=array("a","b","c"); $arr2=array("c",& ...
- php二位数组合并
转自:http://www.cnblogs.com/losesea/archive/2013/06/14/3134900.html 题目:有以下2个二维数组 1$a=Array(0 => Arr ...
- PHP中数组合并的两种方法及区别介绍
PHP数组合并两种方法及区别 如果是关联数组,如下: 复制代码代码如下: $a = array( 'where' => 'uid=1', 'order' => 'uid', ); $b = ...
随机推荐
- FireDAC 下的 Sqlite [10] - 使用 R-Tree 搜索
R-Tree 主要用于三维空间的搜索, 据说这种搜索算法非常之快, 哪怕百万条记录也是眨眼间的事! SQLite 支持 1-5 维, FireDAC 也提供了 TFDSQLiteRTree 控件以方便 ...
- 任务调度框架Hangfire 简介
任务调度是我们项目中常见的功能,虽然任务调度的功能实现本身并不难,但一个好用的轮子还是可以给我们的开发的效率提升不少的. 在.net环境中,较为有名的任务调度框架是HangFire与Quartz.NE ...
- Eclipse 正则表达式 查找与替换
CTRL + space in the textboxes gives you all kinds of suggestions for regular expression writing. 查找 ...
- Memory access Tracing/Profiling
https://mahmoudhatem.wordpress.com/2017/03/22/workaround-for-linux-perf-probes-issue-for-oracle-trac ...
- OpenSSL开发学习总结
from https://mp.weixin.qq.com/s/sJBGJ88_-N-LdA8EHywfAA 1.对称加密算法 对称加密算法只使用一个密钥.数据的发送方准备好原始数据和一个加密密钥,加 ...
- C#远程调用技术WebService葵花宝典
一.课程介绍 直接开门见山吧,在学习之前阿笨想问大家一句,关于WebService远程过程调用技术(RPC) 你真的会了吗?不要跟老夫扯什么WebService技术已经过时,如果你的内心有在偷偷告诉你 ...
- 【linux】linux查看资源任务管理器,使用top命令 + 查看java进程下的线程数量【两种方式】
================================ 详解:https://blog.csdn.net/achenyuan/article/details/77867661 ======= ...
- python测试开发django-15.查询结果转json(serializers)
前言 django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观 返回json数据,需要用到JsonResponse ...
- navicat for mysql只导出数据表结构
选中需要导出表结构的数据库,右键,在显示的菜单中选择“数据传输”这一项 ,在弹出窗口中“数据传输”单击选择“高级”一项,在“高级”中把“记录选项”中的勾去掉,在做一些设置,最后导出表数据就不会导出记录 ...
- 护士当家第一至七季/全集Nurse Jackie迅雷下载
英文译名Nurse Jackie,第1-7季(2009-2015)Showtime. 本季看点:<护士当家>是一部黑色医务剧,该剧特别邀请到荣获艾美奖和金球奖的Edie Falco出演女主 ...