PHP数组

PHP数组
xiu数组概念
了解PHP 中数组的概念
掌握数组的创建方法
数组概述
学生信息
1 | $name = "xiu"; |
把学生信心存储在一个变量里,需要用数组来实现。
1 | $name = "xiu"; |
数组特点
键值对(key-value);
键,key,存储数组中,变量的“编号”。
值,value,存储数组中,变量的值。
数组中的元素可以是任意类型的数据对象。
索引数组,变量的“编号”是整数,整数不具备一定的语义。
关联数组,变量的”编号”用字符串表示,可以具备一定的语义。
1 | $name = "xiu"; |
数组创建
直接赋值
语法:
1 | $stu1[] = $name; //默认是索引数组,从0开始计数。 |
创建第二个学生信息。
1 | $stu2['name'] = "HMM"; |
array 语言结构
语法:
1 | 变量 = array(变量1,变量2,...); |
=>
特殊的字符,在array 语言结构
中连接key
和value
。- PHP 中数组的key 如果是字符串就具备一定的语义,可以非常方便的了解变量的含义。
- PHP 数组中的key ,不建议使用除了整型和字符串的其他类型。
- array() 不是函数,而是一种语言结构。
创建其他学生信息:
1 | $stu3 = array('zs', true, 25, 59.9); |
print_r 与echo 类似,在输出布尔类型变量True 时,打印的是1;在输出False 时,打印什么都没有。
多维数组
数组中的元素可以是任何类型的数据。数组中的元素也可以是数组。
创建多维数组
一个班级有四个学生。
1 | $ns_class = array($stu3, $stu4); |
数组元素访问
数组元素访问的基本方法
掌握数组的遍历方法
数组元素操作
元素访问
通过key 找到数组中的元素。
1 | echo $stu3[3]; |
元素操作
对元素的操作包括:
数组元素操作 | 说明 |
---|---|
读取 | 通过key,捕获数组中的value。 |
修改 | 直接赋值即可。 |
增加 | 直接赋值即可。 |
删除 | PHP 中删除数组中的元素意义不大,置之不理即可。 |
尝试修改数组中的元素:
1 | echo "ls的成绩是 {$ns_class[1]["score"]}<br />"; |
尝试写一个座右铭:
1 | $stu1['word'] = "为往圣继绝学,为万世开太平。"; |
数组的遍历
遍历数组,就是数组中的每个元素都访问一次。
for 循环
使用for 循环可以遍历数组,但是此种方法依赖于数组中key 自然数规律。
1 | for ($i = 0; $i < count($stu1); $i++) { |
显然,此种方法具有局限性,只能遍历索引数组。
foreach 语句
foreach 语法结构提供了遍历数组的简单方式。
foreach 这种语言结构是专门用来遍历数组的,foreach 是一种循环,不需要额外计时器。
1 | foreach ($variable as $key => $value) { |
直接访问数组的值:
1 | foreach ($stu2 as $v) { |
访问键值对:
1 | foreach ($stu2 as $k => $v) { |
注意:
- foreach 是用来遍历数组的循环语言结构,数组中多少个元素,该语言结构就会循环执行几次。
- foreach 语言结构中,临时变量的名字可以变化,但是语言结构不能改变。
预定义超全局数组变量
了解PHP 中预定义超全局数组变量的地位
掌握相关数组的用法
概述
预定义,PHP 已经定义好了,已经存在的,可以直接拿过来使用。
超全局:超级全局变量,作用域是超全局,可以在脚本的任何地方访问和使用,包括函数内部、外部。
数组速查
名称 | 作用 |
---|---|
$_GET | 通过URL 参数(又叫query string)传递给当前脚本的变量的数组。 注意:该数组不仅仅对method 为 GET 的请求生效,而是会针对所有带query string 的请求。 |
$_POST | 当HTTP POST 请求的Content-Type 是application/x-www-form-urlencoded 或multipart/form-data 时,会将变量以关联数组形式传入当前脚本。 |
$_FILES | 通过HTTP POST 方式上传到当前脚本的项目的数组。此数组的概况在POST 方法上传 章节中有描述。 |
$_COOKIE | 通过HTTP Cookies 方式传递给当前脚本的变量的数组。 |
$_SESSION | 当前脚本可用 SESSION 变量的数组。更多关于如何使用的信息,参见Session 函数 文档。 |
$_REQUEST | 默认情况下包含了$_GET,$_POST 和$_COOKIE 的数组。 |
注意:
- 以上数组都是预定义,超全局的。
- 以上数组在不同的PHP 版本中有不同的表现,但是大方向没变。
$_GET
示例代码
1 | // get.php |
说明
- $_GET 是一个预定义数组。
- 作用域是超全局,脚本的任何地方都可以使用。
- 接收从浏览器客户端用户GET 方式传递到服务器的参数。
- GET 传参的参数名做$_GET 数组的key,参数值作为数组的value。
- GET 传参时,直接将参数拼接到URL 中即可。
GET 传参
1 | GET /php/functions/get.php?username=AJEST&password=654321 |
$_POST
示例代码
1 | // post.php |
说明:
- $_POST 用于接收浏览器客户端用户以POST 方式传递过来的参数。
- POST 传参,参数在请求正文中。
POST 请求
1 | POST /php/functions/post.php |
$_COOKIE
COOKIE 技术
为了弥补HTTP 协议的无状态性,保持用户的会话状态,需要使用Cookie 技术。
Cookie 过程:
- 用户提交账密
- 服务器进行身份认证
- 下发身份证,下发Cookie。
- 浏览器客户端用户所有的请求都会携带身份信息,携带Cookie 信息。
- 整体流程体现为,保持了HTTP 会话的状态性。
实例代码
1 | // cookie.php |
写入Cookie
1 | //console |
HTTP 请求报文:
1 | GET /php/functions/cookie.php |
$_REQUEST
$_REQUEST,默认包含了$_GET,$_POST,$_COOKIE 数组中的所有变量。以上提到的三个数组,包含了浏览器客户端的三大传参方式。
$_FILES
参数
1 | $_FILES['uploaded'] 用来保存文件上传信息的。uploaded 就是文件域input 标签name 属性的值。 |
$_FILES 中存储的与上传文件有关的信息,不是文件本身,文件内容在缓存路径中。
正常完成文件上传功能,需要将文件的从缓存拷贝到服务器文件系统中。
文件上传
文件上传的实现,可以有以下步骤:
- 利用$_FILES 数组捕获文件上传信息。
- 将缓存中的文件拷贝到目标路径下。
完整代码:
1 | <html> |