吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2717|回复: 2
收起左侧

[其他转载] PHP 笔记——数组

[复制链接]
He110 发表于 2016-11-25 13:24
本帖最后由 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
链接掉了请私信


免费评分

参与人数 1热心值 +1 收起 理由
q396848273 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

夏雨微凉 发表于 2016-11-25 13:36 来自手机
学习了,多谢分享         
唯一丶 发表于 2016-11-26 07:17
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 13:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表