He110 发表于 2016-11-25 13:24

PHP 笔记——数组

本帖最后由 He110 于 2016-11-27 10:15 编辑

觉得排版难看的可以在文末下载 Markdown 文档观看,观看本文建议先观看其他两篇笔记——PHP 环境配置、PHP 基础

数组作用
[*]管理和操作一组变量, 成批处理
[*]存储任意长度、任意类型的数据
[*]可以完成其他语言的数据结构功能
分类
[*]按维数分: 一维数组、二维数组、多维数组
[*]按类型分: 索引数组(下标为顺序整数)、关联数组(下标为字符串)
声明
[*]直接为数组元素赋值: $数组名[索引] = 值;

[*]如果索引省略, 默认从 0 开始;如果给出索引下标, 下一个元素的索引就从最大的索引+1开始
[*]赋值时对已经赋过值的元素再次赋值, 则会覆盖之前的值
[*]声明数组时, 既有索引数组又有关联数组, 不互相影响, 索引依旧默认从 0 开始
[*]使用 array() 函数: $数组名=array(值1, 值2, 值3…);

[*]默认声明的是索引数组, 如果要改变下标, 则使用 $数组名=array(索引1=>值1, 索引2=>值2…);
[*]如果要声明关联数组, 则修改为 $数组名=array(“键1”=>值1, “键2”=>值2…);
[*]使用其他函数, 如读取所有参数函数
[*]如果数组中的元素是数组, 那么就变成二维数组了
数组的遍历for 循环只能遍历下标连续的索引数组, 局限性大, 使用较少
foreach 循环
[*]语法:
foreach (数组变量 as 值变量){    循环体;}foreach (数组变量 as 下标变量 => 值变量){    循环体;}
[*]循环次数由数组的元素个数决定, 每次循环都会将数组中的元素分别赋值给值变量, 遍历多维数组就写嵌套
组合遍历each()以数组为参数, 返回由数组的下标和值组成的数组, 默认当前元素是第一个元素, 每执行一次, 当前元素向后移动, 如果是最后一个参数, 移动后返回 false。使用 each() - while() 即可遍历
list()将数组转化为变量, 函数的参数个数要和数组中的元素个数相同, 函数会将数组的元素赋值给对应的参数, 只能接受索引数组, 不能接受关联数组, 遇到关联数组就跳过
组合输出组合遍历时, 用 each() 取出数组, 用 list() 转化成变量, 再用 while() 输出。比较复杂, 但似乎效率会高一些, 知道就行。循环遍历数组时需要在每次遍历完后将指针移回第一个元素
PHP 预定义数组
[*]又叫自动全局变量、超全局数组
[*]特点:

[*]包含了来自 WEB 服务器、客户端、运行环境、用户输入的数据
[*]在全局范围内生效, 任何文件任何 <?php?> 标签对中均可使用
[*]用户不能自定义这些数组
[*]在函数中可以直接使用
[*]常见的超全局数组
$_GET: 存储通过 GET 方式提交的表单数据$_POST: 存储通过 POST 方式提交的表单数据$_REQUEST: 存储 $_GET、$_POST、$_COOKIE 提交的数据, 速度较慢、易被攻击, 尽量不使用$_COOKIE: 会话控制$_SESSION: 会话控制$_ENV: 存储 PHP 所在服务器的环境相关信息, 如 Apache$_SERVER: 包含诸如头信息、路径、脚本位置的数组, 可用 foreach() 遍历$GLOBALS: 只要是当前脚本中全局变量都存在这里指针控制数组相关函数reset(数组名)。数组指针指向第一个元素end(数组名)。数组指针指向最后一个元素next(数组名)。数组指针指向下一个元素prew(数组名)。数组指针指向上一个元素current(数组名)。取数组当前元素key(数组名)。取数组当前下标数组处理函数关联数组操作array_values(数组): 取出关联数组的值组成新的索引数组array_keys(数组): 取出关联数组的下标组成新的索引数组in_array(值, 数组): 搜索数组中某个值是否存在array_key_exists(键, 数组): 搜索数组中某个键是否存在array_flip(数组): 该数组键值互换array_reverse(): 返回元素顺序反转后的数组, 不改变键值对的对应关系统计数组元素的个数和唯一性count(数组): 返回数组长度array_count_values(数组): 统计数组中所有值出现的次数。返回一个数组, 用原数组的值为键, 出现次数为值。array_unique(数组): 移除重复元素, 返回没有重复值的数组使用回调函数处理数组array_filter(数组, 回调函数): 用回调函数过滤数组中的元素, 回调函数必须是**变量函数或者是函数名**, 使用函数名作为回调函数时, 需要将函数名加上引号array_walk(数组, 回调函数): 依次将数组中的每个成员用回调函数处理, 不会将处理结果返回, 只会返回执行结果, 即true/falsearray_map(): 将回调函数作用在指定元素上回调函数说明: 回调函数是处理某个元素的, 所以需要有一个参数, 注意看有没有返回值数组排序简单排序sort(数组[,比较类型]): 将数组的值取出, 升序排序后生成索引数组替换原数组, 原有的键值对关联被破坏rsort(数组[, 比较类型]): 将数组的值取出, 降序排序后生成索引数组替换原数组, 原有的键值对关联被破坏根据键名排序ksort(数组[, 比较类型]): 根据键将数组升序排序, 不改变原有的键值对关联krsort(数组[, 比较类型]): 根据键将数组降序排序, 不改变原有的键值对关联根据值排序asort(数组[, 比较类型]): 根据值将数组升序排序, 不改变原有的键值对关联arsort(数组[, 比较类型]): 根据值将数组降序排序, 不改变原有的键值对关联根据自然数排序法排序natsort(数组): 将数组按照认知, 升序排序, 区分大小写, 简单排序则是按照首位数字/字母进行排序, 即 2 比 11 大;自然排序则是 11 比 2 大natcasesort(数组): 将数组按照认知, 升序排序, 不区分大小写natrsort(数组): 将数组按照认知, 降序排序, 区分大小写natcasersort(数组): 将数组按照认知, 降序排序, 不区分大小写根据用户自定义方法排序usort(数组, 回调函数): 使用自定义比较函数排序, 改变原有的键值对关联uasort(数组, 回调函数): 使用自定义比较函数按值排序, 不改变原有的键值对关联uksort(数组, 回调函数): 使用自定义比较函数按键排序, 不改变原有的键值对关联关于回调函数的说明: 回调函数的作用是比较当前参数和下一个参数的大小, 所以会接收 2 个参数, 根据返回值为0、1、-1确定大小, > 返回 1, < 返回 -1, = 返回 0
数组的拆分、连接、合并、分解array_slice(数组, 起始元素下标[, 取出元素个数][, 是否生成保留原数组关联]): 从数组中取出一段数据array_splice(数组, 起始元素下标[, 移除元素个数][, 替换元素所在数组]): 批量删除元素或替换元素, 返回被删除/替换的元素, 会更改原数组array_combine(数组1, 数组2): 合并两个数组, 第一个数组为键, 第二个数组为值array_merge(数组1, 数组2): 合并两个数组, 重新建立数组索引array_intersect(数组1, 数组2): 取两个数组的交集(相同项), 新数组的索引按照 数组1 的索引, 即 数组1 不会改变关联array_diff(数组1, 数组2): 取两个数组的差集(不同项), 新数组的索引按照 数组1 的索引, 即 数组1 不会改变关联数据结构array_push(数组名, 值): 在数组尾部增加元素, 使用 "$数组名[] = 值" 也是在数组尾部增加元素array_pop(数组名): 移除最后一个元素array_unshift(数组名, 值): 将数据添加到数组头部array_shift(数组名): 移除第一个元素unset(): 删除任意一个数据其他array_rand(数组, 取出下标个数): 从数组中随机取一个或多个元素的下标shuffle(数组): 将数组随机排序array_sum(): 求数组所有元素之和, 如果是字符串数组不会按 ASCII 转码, 而是都为 0range(): 建立一个包含指定范围的数组, 比如1-10: range(1,10);数组运算符"+": 连接两个数组, 具有相同键的元素, 保留先出现的, 后出现的数据抛弃"==": 如果两个数组变量具有相同的键值对则为 true"===": 如果两个数组变量具有相同的键值对且顺序和类型都相同则为 true"!=": 如果两个数组变量不等则为 true"<>": 同 "!=""!==": 如果两个数组变量不全等则为 true

Markdown 文档下载:链接: http://pan.baidu.com/s/1hsfro0k 密码: wnnt
链接掉了请私信


夏雨微凉 发表于 2016-11-25 13:36

学习了,多谢分享         

唯一丶 发表于 2016-11-26 07:17

{:301_978:}还可以顺带把“对象数组(ObjectArray)”看了
页: [1]
查看完整版本: PHP 笔记——数组