PHP数组合并 array_merge 与 + 的差异
在PHP数组合并出过几次问题都没记住,写下来加强一点记忆
PHP数组在合并时,使用 array_merge 与 + 的差异:
1、array_merge(array $array1 [, array $... ])
a、如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。
b、如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
c、如果输入只有一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
2、$array1 + $array2
a、两个数组中有的相同的键名,则只用左边数组中的,右边的被忽略。
这两种合并的效果类似如下(不过还是看看源码的靠谱):
$array1 = array("name" => "wing", "good", 322222=>2, 4);
$array2 = array("a", "b", "color" => "green", "hello" => "word", 3=>4);
// array1 + array2
function addArray($arr1 = array(), $arr2 = array()) {
if(!empty($arr2)) {
foreach($arr2 as $key=>$value) {
if(!isset($arr1[$key])) {
$arr1[$key] = $value;
}
}
}
return $arr1;
}
// array_merge
function arrayMerge($arr1 = array(), $arr2 = array()) {
$result = array();
foreach(array($arr1, $arr2) as $arr) {
if(!empty($arr)) {
foreach($arr as $key=>$value) {
if(!is_numeric($key)) {
$result[$key] = $value;
} else {
$result[] = $value;
}
}
}
}
return $result;
}
PHP数组合并 array_merge 与 + 的差异的更多相关文章
- PHP 数组相加 和 数组合并array_merge
$arr1 = array("a"=>"PHP","b"=>"java","python" ...
- php中的常用数组函数(七) 数组合并 array_merge()和array_merge_recursive()
$arr1 = array(1, 2, 3, 4, 'color'=>'red'); $arr2 = array('a', 'b', 'c', 'color'=>'blue'); prin ...
- PHP数组合并+与array_merge的区别分析 & 对多个数组合并去重技巧
PHP中两个数组合并可以使用+或者array_merge,但之间还是有区别的,而且这些区别如果了解不清楚项目中会要命的! 主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意 ...
- php数组合并方法array_merge + 排序array_multisort方法 array_unique数组去重 array_values数组索引值重新从0开始递增
$dingdan = array_merge($jie_dingdan,$user_dingdan);//数组合并方法 $orderFile = array(); foreach($dingdan a ...
- 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 = ...
- php 操作数组 (合并,拆分,追加,查找,删除等)
1. 合并数组 array_merge()函数将数组合并到一起,返回一个联合的数组.所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加.其形式为: array array_merg ...
- 深度解析PHP数组函数array_merge
很久之前就用到过这个函数,只不不过是简单的用用而已并没有做太深入的研究 今天在翻阅别人博客时看到了对array_merge的一些使用心得,故此自己来进行一次总结. array_merge是将一个或者多 ...
随机推荐
- SQL超过锁请求
---超过锁请求 http://blog.sina.com.cn/s/blog_7fb3b1840100u4dj.html 1.查询造成死锁的SQL语句 当SQL数据库的监控报警显示死锁进程数过多时, ...
- C++:名字查找先于类型检查
Sub-Title: Name Hiding. "In C++, there is no overloading across scopes - derived class scopes a ...
- 关于spring AOP的学习
比较好的帖子http://www.cnblogs.com/xing901022/p/4265544.html
- 【232】◀▶ IDL显示地理图像
参考: 01 IMAGE 将图像数据以图形窗体的形式显示. 02 COLORBAR 在已经存在的IDL图形中增加一个colorbar或创建. 03 MAPGRID 在已经存在的IDL地图图 ...
- eclipse的快捷键(写给eclipse新手)
Eclipse常用的快捷键 1.常用的快捷键 Alt+/:常用于补全单词.方法,以及内容辅助,可以省很多事情 Ctrl+1:用于全局,快速修正 Ctrl+D 删除整行 Ctrl+F 用于全局 , ...
- Google V8编程详解(四)Context
http://blog.csdn.net/feiyinzilgd/article/details/8266780 上一章,比较略提了下V8的Context.本章将详细的讲解下Context的概念以及用 ...
- Spark-Mllib(二)基本统计
一.基本统计量 统计向量的长度,最大值,最小值,非0个数,模1和模2,方差等 import org.apache.spark.mllib.linalg.{Vector,Vectors} import ...
- UGUI代码分析
1.canvas,screen模式和world模式区别:screen的绑定摄像机与canvas相对位置不会改变不可改变canvas,world模式下有个event camera相对位置可改变,canv ...
- information_schema.TABLES
获取所有表结构(TABLES) SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA='数据库名'; TABLES表:提供了关于数据库中 ...
- libcurl教程
名称 libcurl 的编程教程 目标 本文档介绍使用libcurl编程的一般原则和一些基本方法.本文主要是介绍 c 语言的调用接口,同时也可能很好的适用于其他类 c 语言的接口. 跨平台的可移植代码 ...