




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 低压电器 课件 单元二 项目二 任务四 主令电器的使用
- 山西应用科技学院《金融信托与租赁》2023-2024学年第二学期期末试卷
- 西安航空职业技术学院《动物微生物与免疫学》2023-2024学年第二学期期末试卷
- 云南省师宗县2025年中考最后冲刺模拟(一)语文试题文试题含解析
- 浙江省台州市坦头中学2024-2025学年初三下学期中考模拟训练(五)英语试题试卷含答案
- 苏州卫生职业技术学院《医学图像处理B》2023-2024学年第二学期期末试卷
- 浙江省杭州市杭州二中2024-2025学年高三下学期返校数学试题含解析
- 上海市嘉定区封浜高中2024-2025学年高三入学检测试题生物试题含解析
- 宁波财经学院《教师职业理念与师德修养》2023-2024学年第二学期期末试卷
- “经营”英语竞争力讲座
- 教学方法导论教师培训课件
- TCALC 003-2023 手术室患者人文关怀管理规范
- 网络传播概论(第5版) 课件 第4-6章 网络传播形式之短视频传播、网络传播中的群体互动、网络传播与“议程设置”
- 物业客户服务主要触点及基本要求
- 老年痴呆的护理课件
- 中药热奄包在呼吸系统疾病中的应用研究
- 2024年企业战略与决策培训资料
- 小学英语学科项目化学习案例-
- (40)-第四章 网络层-知识点9-VPN和NAT计算机网络
- 互联网视觉设计-电商视觉设计
- 客房服务员国家标准
评论
0/150
提交评论