- 浏览: 70989 次
- 性别:
- 来自: 广州
最新评论
经过《PHP开发笔记系列(九)- 数组(一)》 、《PHP开发笔记系列(九)- 数组(二)》 、《PHP开发笔记系列(九)- 数组(三)》 三篇的关于数组的使用后,本篇《PHP开发笔记系列(九)- 数组(四)》 将把Php数组的最后一部分,数组的集合处理。
1. 合并数组
在平常的使用中,我们可能需要从数据库中查询两部分数据,分别是两个数组,然后融合两个数组得到一个结果。要达到这样的效果,需要用到array_merge()函数,对于数值键数组,两个数组中的元素会叠加,即使值相同,也不会覆盖前面的元素,因此返回结果的数组长度等于两个数组之和。如下:
file: array_merge.php url: http://localhost:88/array/array_merge.php <?php $number = array(1, 2, 3, 4, 5); $letter = array('a', '1', 'b', '2', 'c'); $result = array_merge($number, $letter); print_r($result); ?>
对于关联键数组,如果键相同,则对应的值会被后面的元素覆盖。如下:
file: array_merge.php url: http://localhost:88/array/array_merge.php <?php $student = array('s1'=>'1st student', 's2'=>'2nd student', 's3'=>'3rd student'); $new_student = array('s1'=>'1st new student', 's2'=>'2nd student', 's3'=>'3rd new student'); $result = array_merge($student, $new_student); print_r($result) ?>
2. 递归追加数组
array_merge_recursive()函数与array_merge()函数相同,不同的是前者会把键值相同的两个元素的值合并在一起,形成一个新的数组并以原有的键作为数组名。如下:
file: array_merge_recursive.php url: http://localhost:88/array/array_merge_recursive.php <?php $student = array('s1'=>'1st student', 's2'=>'2nd student', 's3'=>'3rd student'); $new_student = array('s1'=>'1st new student', 's2'=>'2nd student', 's3'=>'3rd new student'); $result1 = array_merge_recursive($student, $new_student); print_r($result1) ?>
3. 键数组与值数组合并
array_combine()函数可以将一个键数组与一个值数组合并,这两个数组需要长度相同,不能为空。如下:
file: array_combine.php url: http://localhost:88/array/array_combine.php <?php $short_name = array('MJ', 'RM', 'PP', 'MC', 'KD'); $full_name = array('Michael Jackson', 'Rose Mary', 'Peter Pan', 'Mike chan', 'Kelvin Durant'); $result = array_combine($short_name, $full_name); print_r($result); ?>
4. 数组拆分
array_slice()函数与array_splice()函数接受三个参数,第一个是输入数组,第二个是offset,第三个是length,用于从输入数组截取offset开始,截取length长度的元素,以数组形式返回。length可以为正数或负数。如下:
file: array_slice.php url: http://localhost:88/array/array_slice.php <?php $short_name = array('MJ', 'RM', 'PP', 'MC', 'KD'); // 从第2为开始,截取2个元素 $result = array_slice($short_name, 2, 2); print_r($result); echo "<br/>==================<br/>"; // 若length为负数,则截取到count($short_name)-|length|位置结束 $result1 = array_slice($short_name, 2, -1); print_r($result1); ?>
array_splice()函数与array_slice()函数类似,不同的是前者会删除数组中从offset开始到offset+length结束的所有元素,并以数组形式返回被删除的元素。
file: array_splice.php url: http://localhost:88/array/array_splice.php <?php $short_name = array('MJ', 'RM', 'PP', 'MC', 'KD'); // 从第2为开始,截取2个元素 $result = array_splice($short_name, 2, 2); print_r($result); echo "<br/>==================<br/>"; $full_name = array('Michael Jackson', 'Rose Mary', 'Peter Pan', 'Mike chan', 'Kelvin Durant'); // 若length为负数,则截取到count($short_name)-|length|位置结束 $result1 = array_splice($full_name, 2, -1); print_r($result1); ?>
5. 数组交集
array_intersect()函数返回一个保留了键的数组,这个数组只由第一个数组中出现的且在其他每个输入数组中都出现的值组成。
file: array_intersect.php url: http://localhost:88/array/array_intersect.php <?php $arr1 = array('MJ', 'RM', 'PP', 'MC', 'KD'); $arr2 = array('MJ', 'RM', 'PP1', 'MC1', 'KD1'); $arr3 = array('MJ', 'RM', 'PP2', 'MC2', 'KD2'); // 比较时,只有两个元素有相同的数据类型时,才被认为相等。 $intersect = array_intersect($arr1, $arr2, $arr3); print_r($intersect); ?>
求关联数组的交集时,用到的array_intersect_assoc()与array_intersect()相同,只不过在考虑是会考虑数组的键。因此,只有在第一个数组中出现,且在所有其他输入数组中也出现的键/值才被返回到结果数组中。如下:
file: array_intersect_assoc.php url: http://localhost:88/array?array_intersect_assoc.php <?php $arr1 = array('MJ'=>'Michael Jackson', 'RM'=>'Rose Mary', 'PP'=>'Peter Pan'); $arr2 = array('MJ'=>'Michael Jackson', 'ML'=>'Mary Lee', 'RM'=>'Rose Mary'); // 只有键和值都相等的才会被返回 $intersect = array_intersect_assoc($arr1, $arr2); print_r($intersect); ?>
6. 数组差集
array_diff()函数返回出现在第一个数组中但其他输入数组中没有的值。这个函数的功能与array_intersect()相反。
file: array_diff.php url: http://localhost:88/array/array_diff.php <?php $arr1 = array('MJ', 'RM', 'PP', 'MC', 'KD'); $arr2 = array('MJ', 'RM', 'PP1', 'MC1', 'KD1'); $arr3 = array('MJ', 'RM', 'PP2', 'MC2', 'KD2'); $diff = array_diff($arr1, $arr2, $arr3); print_r($diff); ?>
求关联数组的差集时,用到的array_diff_assoc()与array_diff()相同,只不过在考虑是会考虑数组的键。因此,只有在第一个数组中出现,且在所有其他输入数组中也出现的键/值才被返回到结果数组中。如下:
file: array_diff_assoc.php url: http://localhost:88/array/array_diff_assoc.php <?php $arr1 = array('MJ'=>'Michael Jackson', 'RM'=>'Rose Mary', 'PP'=>'Peter Pan'); $arr2 = array('MJ'=>'Michael Jackson', 'ML'=>'Mary Lee', 'RM'=>'Rose Mary'); // 只有键和值都相等的才会被返回 $diff = array_diff_assoc($arr1, $arr2); print_r($diff); ?>
还有其他的shuffle()函数、array_chunk()函数、array_sum()函数用得相对较少,就不再讲述。
本文地址: http://ryan-d.iteye.com/blog/1566777
- array.zip (9.2 KB)
- 下载次数: 4
发表评论
-
php curl in windows configuration
2012-09-11 11:32 0Just an additional note for Win ... -
PHP开发笔记系列(九)- 数组(三)
2012-06-24 16:10 1741写了两篇关于Php数组的日常使用,本篇《PHP开发笔记 ... -
PHP开发笔记系列(九)- 数组(二)
2012-06-23 23:22 1839昨晚临睡前写完了《PHP开发笔记系列(九)- 数组( ... -
PHP开发笔记系列(九)- 数组(一)
2012-06-22 22:34 1507最近在做项目的时候,经常需要用到关联数组的处理,发现P ... -
php 正则表达式
2012-06-15 12:10 0php 正则表达式 -
PHP XML处理
2012-06-15 11:47 0PHP XML处理 -
PHP开发笔记系列(十)- 电子邮件
2012-06-01 17:05 0Mail在应用程序中经常会使用到,例如注册成功后的账号 ... -
PHP开发笔记系列(八)- 上传与下载
2012-06-18 09:26 1861最近由于项目需要,在GZBGY进行了闭关,与同行的De ... -
PHP开发笔记系列(XAMPP+PhpEclipse+XDebug)
2012-05-29 21:51 1882第一篇:《PHP开发 ... -
PHP开发笔记系列(七)- 压缩与解压缩
2012-06-06 20:27 3461压缩与解压缩,在一般的web应用程序中可能用得不 ... -
PHP开发笔记系列(六)- 内置FTP函数
2012-06-04 08:57 1576FTP是我们经常用到的一种服务器,能够用来接收第三方系 ... -
PHP开发笔记系列(五)- INI文件解释
2012-06-01 15:52 1833在JAVA开发中,我 ... -
PHP开发笔记系列(四)-文件操作
2012-05-30 20:32 2170对于一般的web应用程序,数据会保存在数据库表中,但是 ... -
PHP开发笔记系列(三)-日期与时间
2012-05-29 19:53 3788前两篇完成了 《P ... -
PHP开发笔记系列(二)-字符串使用
2012-05-29 11:29 1553经过了《PHP开发笔记系列(一)-PDO使用 ... -
PHP开发笔记系列(一)-PDO使用
2012-05-28 21:16 10570之前一段时间,开始了php的研究,看了关于PDO的一 ...
相关推荐
NULL 博文链接:https://ryan-d.iteye.com/blog/1566686
NULL 博文链接:https://ryan-d.iteye.com/blog/1566123
PHP移动后端开发课堂笔记 以下是文章结构目录: 一、软件开发及其准备 如何配置XAMPP 二、PHP基础 初识PHP 2.1 PHP标记与注释 2.1.1 PHP标记 2.1.2 注释 2.1.3 语句结束符 2.2 变量与常量 2.2.1 变量 2.2.2 常量 2.3...
《php开发典型模块大全》读书笔记 第四章 smarty (张迅雷闪击PHP系列) 下载地址 http://www.smarty.net/download 测试使用的是Smarty-2.6.26\libs 公用的smarty类库和相关信息,将smarty放在服务器根目录下,配置...
│ │ └笔记.doc │ ├ │ │ ├[思库教育]第25集 斐波纳挈数列.mp4 │ │ └[思库教育]第26集 数组的遍历.avi │ ├ │ │ ├[思库教育]第27集 猴子吃桃.avi │ │ ├[思库教育]第28集 杨辉三角.avi │ │ ├[思库...
适用场合:任何小数与0 做 按位或的操作,可以快速转换为整数(并非四舍五入) 5 | 0 101 000 ==== 101 3、按位 异或 :^ 语法:a ^ b 特点:将 a 和 b 先转换为二进制,按位操作,对应位置上的两个数字,...
PHP开发特级课程 PHPCMS二次开发 PHP基础编程 PHP基础项目实战 PHP多版本集成环境之Wamp PHP无限分类 PHP经典实例 PHP面向对象 PHP面试题实战 ThinkPHP之RBAC权限把控 ThinkPHP后端框架 ThinkPHP数组改造 ThinkPHP...
返回的是一个层次比较分明的数组对象,希望对大家有所帮助,来源WEB开发笔记(www.chhua.com)。 复制代码 代码如下: function object_to_array($obj) { $_arr = is_object($obj) ? get_object_vars($obj) : $obj; ...
最近买了本php和mysql web开发,看到数组循环语句。值得自己关注下,特此留点字迹,以便以后读阅
Mac OS X 小牛队谷歌浏览器(最新) PHP 5.4+ 带内置 PHP 服务器字体(自行下载、安装和许可)特征支持5类支持 5 个问题级别(例如,200、400、600、800、1000) 问题从 PHP 数组加载可以配置基本分数,以便可以...
在web开发中对象的序列化与反序列化经常使用,比较主流的有json格式与xml格式的序列化与反序列化,今天想写个jsop的小demo,结果发现不会使用php序列化,查了一下资料,做个笔记简单数组json格式序列化/反序列化 php...
针对循环、数组、类的概念、类的构建、类的使用、对象的创建、面向对象的思想、集合、排序、IO操作等知识点先后安排2或3个小型项目:1。制作一个通讯录;2。制作一个小游戏;3。教学管理系统。 通过实际项目深入理解...