php array_merge函数使用需要注意的一个问题
使用php语言的array_merge函数时,以为相同的键名会覆盖,但是请看如下代码:
$a1 = array(1=>'abc', 3=>10);
$a2 = array(1=>'efg', 3=>20);
print_r(array_merge($a1, $a2));
会输出什么?我们预想中的是:
Array
(
[1] => efg
[3] => 20
)
实际上输出的是:
Array
(
[0] => abc
[1] => 10
[2] => efg
[3] => 20
)
不但没有被覆盖,而且数字键被重新连续索引了。
起初以为这个是bug,后来翻了php手册 http://php.net/manual/zh/function.array-merge.php
「如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。」
相关推荐
-
使用array_map简单搞定PHP删除文件、删除目录
废话不多说,直接贴上代码.本文体现的就是简洁 复制代码 代码如下: <?php //删除目录下所有空目录 array_map('rmdir', glob('*', GLOB_ONLYDIR)); //删除目录所有文件 array_map('unlink', array_filter(glob('*'), 'is_file')); 使用array_map实现array_column功能: 复制代码 代码如下: $data = array( array( 'a' =>
-
PHP合并数组+与array_merge的区别分析
主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意 1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值"抛弃"掉(不是覆盖) 2)键名为字符时,+仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值"抛弃"掉,但array_merge()此时会覆盖掉前面相同键名的值 需要注意的是数组键形式 '数字' 等价于 数字 复制代码 代
-
PHP常见数组函数用法小结
本文实例讲述了PHP常见数组函数用法.分享给大家供大家参考,具体如下: 1.array array_merge(array $array1 [, array $array2 [, $array]]) 函数功能:将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面.返回结果的数组. 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值.然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面. 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方
-
php array_slice函数的使用以及参数详解
复制代码 代码如下: <?php /* 用手册上的例子 */ $input = array ("a", "b", "c", "d", "e"); $output = array_slice ($input, 2); // returns "c", "d", and "e", $output = array_slice ($input, 2,
-
PHP中array_slice函数用法实例详解
本文详细介绍了array_slice函数的详细用法以及一些常用的array_slice实例程序,分享给大家供大家参考.具体分析如下: array_slice() 函数在数组中根据条件取出一段值,并返回. 注释:如果数组有字符串键,所返回的数组将保留键名,参见例子 4. 语法:array_slice(array,offset,length,preserve) 函数在数组中根据条件取出一段值,并返回. 参数: array 必需,规定输入的数组. offset 必需,数值,规定取出元素的开始位置,
-
php通过array_merge()函数合并两个数组的方法
本文实例讲述了php通过array_merge()函数合并两个数组的方法.分享给大家供大家参考.具体分析如下: php通过array_merge()函数合并两个数组,array_merge()是一个php函数,用于将两个或者多个数组合并,后一个数组会追加到前一个数组后面,并返回结果数组.它接受两个或两个以上的数组,并返回一个包含了所有元素的数组. $first = array("aa", "bb", "cc"); $second = array(
-
php 利用array_slice函数获取随机数组或前几条数据
先给大家说下基本语法: array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys ]] ) array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列. 如果 offset 非负,则序列将从 array 中的此偏移量开始.如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始. 如果给出了 length 并且为正,则序列中
-
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
本文实例讲述了PHP查询并删除数据库多列重复数据的方法.分享给大家供大家参考,具体如下: <?php $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } $db_selected = mysql_select_db("test_db", $con); if (!$db
-
php之XML转数组函数的详解
如下所示: 复制代码 代码如下: <?/** * xml2array() will convert the given XML text to an array in the XML structure. * Link: http://www.bin-co.com/php/scripts/xml2array/ * Arguments : $contents - The XML text * $get_attributes - 1 or 0. If this is
-
php array_map()数组函数使用说明
复制代码 代码如下: /*函数array_map()函数:多数组回调函数---将回调函数作用到给定数组的单元上 * 1.语法:array array_map ( callback callback, array arr1 [, array ...] ) * 2.描述:返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后的 * 单元.callback 接受的参数数目应该和传递给 array_map() 函数的数组数目一致. * 3.注意事项: * 3.1.多数组回调
-
PHP常用数组函数介绍
在编程中查手册是少不了的,所以要会学着使用已有的东西,就如PHP中的数组处理函数已经有排序函数了,为什么还要在写东西是费着劲去写冒泡或者堆排或者快排呢. 编程是间接的过程,也是重用的过程,要写出好的代码是少不了设计模式来做支撑的,可能对初学者来说学习设计模式有些吃力(就像我当初看设计模式时,真是有点费劲),不过等你的代码量有一定积累时,在研究设计模式时,感觉设计模式真的挺有用的,能帮助你写出漂亮的代码.说着说着有点跑偏了,还是来总结一下php中对数组操作的常用函数吧. 以下总结的数组常用的函数,
-
php数组函数array_key_exists()小结
array_key_exists()函数判断某个数组中是否存在指定的key,如果key存在,则返回true,否则返回flase array_key_exists(key,array); key:必需.规定键名 array:必需.规定输入的数组 <?php $a = array('a'=>'Dog','b'=>'Cat'); if(array_key_exists('a',$a)){ echo 'Key exists!'; } else{ echo 'Key does not exist!
-
php数组合并array_merge()函数使用注意事项
1.array_merge()合并 例子 $array = array('a'=>'bb'); $array2 = array('b'=>'cc'); $array3 = array_merge($array,$array2); 输出结果为 Array ( [a] => bb [b] => cc ) 上面因为都是数组就没有问题了,假如我们把$array 设置不是数组看看什么情况 $array = 1;//array('a'=>'bb'); $array2 = array('b
-
PHP对象转换为数组函数(递归方法)
返回的是一个层次比较分明的数组对象,希望对大家有所帮助,来源WEB开发笔记(www.chhua.com). 复制代码 代码如下: function object_to_array($obj) { $_arr = is_object($obj) ? get_object_vars($obj) : $obj; foreach ($_arr as $key => $val) { $val = (is_array($val) || is_object($val)) ? object_to_array($
随机推荐
- php array_merge_recursive 数组合并
- Python数据分析之真实IP请求Pandas详解
- JS对img进行操作(换图片/切图/轮换/停止)
- PHP生成随机密码类分享
- Python魔术方法详解
- 脚本自动添加crontab示例
- Java Socket实现的传输对象功能示例
- shell 基本计算、逻辑运算、位运算详解
- php+mysql分页代码详解
- jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
- JQuery中解决重复动画的方法
- 基于jquery打造的百分比动态色彩条插件
- javaScript NameSpace 简单说明介绍
- JS判断是否长按某一键的方法
- 使用URL传输SESSION信息
- java实现 微博登录、微信登录、qq登录实现代码
- Java 基础 byte[]与各种数据类型互相转换的简单示例
- springboot获取URL请求参数的多种方式
- Android View的事件分发详解
- Linux下删除乱码或特殊字符文件的方法讲解