版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、深入浅出PHP数组原理和算法解析宋登高,2014年4月主要内容数组的表达方式:多维数组、数组式访问接口预定义数组数组类型转换遍历数组若干方法 数组探秘查找数组元素:普通查找和模糊查找移除和过滤数组元素数组排序和对比数组和数据结构:列表、散列表、集合、栈、队列想一想:如何构造一个数组?通常做法: $items = array(); 索引数组: $items0= abc123 ; $items=abc123 ;关联数组: $itemsname=andy;以下构造数组的方法对吗?数组key和value的限制条件包含有合法整型值的字符串会被转换为整型浮点数和布尔值也会被转换为整型键名 null 实际会
2、被储存为 数组和对象不能被用为键名相同键名,之前会被覆盖PHP预定义接口之“数组式访问”练习: 实现数组式访问接口PHP中的预定义数组$GLOBALS 引用全局作用域中可用的全部变量$_SERVER 服务器和执行环境信息$_GET HTTP GET 变量$_POST HTTP POST 变量$_FILES HTTP 文件上传变量$_REQUEST HTTP Request 变量$_SESSION Session 变量$_ENV 环境变量$_COOKIE HTTP CookiesPHP数组类型转换int,float,string,boolean 和 resource 类型 (array)$sca
3、larValue 等同 array($scalarValue) object 转换为 array,结果为一个数组,其单元为该对象的属性,键名将为成员变量名将 NULL 转换为 array 会得到一个空的数组PHP数组转换为字符串,也即串行化、持久化方法一:函数 serialize() 可以实现方法二:函数 json_encode ()可以实现方法三:函数 var_export($items,true);方法四:xml、自定义文件格式遍历数组若干方法for :语句循环遍历 foreach :循环遍历 while: (list($key, $val) = each($fruit) array_wa
4、lk :回调遍历current和next :内部指针遍历array_walk与array_map有什么不同?array_walk 引用的方式对数组进行遍历,返回值不重要array_map 为了改变数组的数据,支持多个数组数据合并,目的是返回新的数组walk和map的回调函数位置也不一样for和foreach谁更快呢?只用循环,不操作数组,for更快在遍历过程中要访问数组元素或对元素进行处理,foreach更快PHP数组探秘之“ HashTable结构 ”PHP数组探秘之“ Bucket结构 ”PHP数组“指针”相关函数current() - 返回数组中的当前单元end() - 将数组的内部指针
5、指向最后一个单元next() - 将数组中的内部指针向前移动一位reset() - 将数组的内部指针指向第一个单元each() - 返回当前的键/值对并将指针向前一步PHP数组元素查找判断key是否存在:array_key_exists() 和 isset()判断值是否存在: in_array() 和 array_search()依据键返回值: $items$key依据值返回键: array_keys ($items,$value);依据给定值进行模糊查找:preg_grep();数组转换中对array_key_exists()的应用练习:PHP数组处理PHP数组元素的过滤和移除方法1:直接用
6、unset移除元素方法2:遍历过程中建立新数组方法3:用array_filter过滤元素方法4:用array_shift()将开头的元素移出数组方法5:用array_pop ()将最后一个元素弹出PHP数组排序函数对比练习: PHP多维数组排序数组和数据结构之“列表”列表能存储多个数据元素,他就像一条线一样,把所有存储的数据元素连在一起,所以也称作是线性的数据结构。数组和数据结构之“散列表”散列表(Hash table,也叫哈希表),是根据关键字(Key value)而直接访问在内存存储位置的一种数据结构。数组和数据结构之“集合”在计算机科学中,集合是一组可变数量的数据项的组合,这些数据项可能
7、共享某些特征,需要以某种操作方式一起进行操作。遍历子集合的算法从m个数中选出n个数来 ( 0 n = m) ,要求n个数之间不能有重复,其和等于一个定值k,求一段程序,罗列所有的可能。例如备选的数字是:11, 18, 12, 1, -2, 20, 8, 10, 7, 6 ,和k等于:18 PHP数组集合相关运算array_diff() - 计算数组的差集array_udiff() - 用回调函数比较数据来计算数组的差集array_diff_assoc() - 带索引检查计算数组的差集array_diff_key() - 使用键名比较计算数组的差集array_intersect 计算数组的交集a
8、rray_intersect_key 使用键名比较计算数组的交集array_intersect_assoc 带索引检查计算数组的交集array_merge 合并一个或多个数组数组和数据结构之“栈”栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据(LIFO, Last In First Out)。数组实现“栈”的核心操作数组和数据结构之“队列”队列就是是先进先出(FIFO, First-In-First-Out)的线性表。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。数组实现“队列”的核心操作PHP数组解决“约瑟夫环”问题 一群猴子排
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 群众抗旱自救指导管理规范
- 医疗保险产品设计与市场策略
- 医疗礼仪:患者隐私保护要点
- 胶囊剂工安全操作模拟考核试卷含答案
- 实际问题与反比例函数课件人教版九年级数学下册
- Unit1PeopleofAchievement词汇课件-高中英语人教版选择性
- 防锈处理工标准化测试考核试卷含答案
- 广播电视机务员岗前评优考核试卷含答案
- 固体矿产钻探工岗前设备考核试卷含答案
- 钻井工岗前安全生产基础知识考核试卷含答案
- 氢能与燃料电池技术 课件 5-燃料电池
- DG-TJ08-2011-2007 钢结构检测与鉴定技术规程
- 【课件】台湾的社区总体营造
- 重庆市两江新区2023-2024学年五年级上学期英语期末试卷
- BGO晶体、LYSO晶体、碲锌镉晶体项目可行性研究报告写作模板-备案审批
- 昆明理工大学《机器学习》2023-2024学年第一学期期末试卷
- 2023版国开电大本科《高级财务会计》在线形考(任务一至四)试题及答案
- 难治性类风湿关节炎的诊治进展
- 城镇职工医疗保险
- 煤矿用履带式液压钻机ZDY2300LX说明书-图文
- 中外政治思想史练习题及答案
评论
0/150
提交评论