php数组特点: 1)可以整数下标或者字符串下标 2)如果数组下标都为整数:索引数组 3)如果数组下标都为字符串:关联数组 4)不同下标可以混合存在:混合数组 5)数组元素的顺序以放入顺序为准,跟下标无关 6)数字下标的自增长特性:从0开始自动增长,如过中间手动出现较大的,那么后面的自增长元素从最大的值+1开始 7)特殊值下标将会自动转换,布尔值:true和false ,空:null (false转为下标0,true转为1,null转为空) 8)PHP中数组元素没有类型限制 9)PHP中数组元素没有长度限制 10)PHP中的数组是很大的数据,所以存储位置是堆区,为当前数组分配一块连续的内存。(PHP数组灵活,但是效率较低)
多维数组: 数组里面的元素是数组,在第二维的数组元素中可以继续是数组
二维数组: 数组里面全为一维数组 (PHP本质并没有二维数组) 不建议使用超过三维以上的数组,会增加访问的复杂度,降低访问效率
异型数组(不规则数组) 数组中的元素不规则,有普通变量也有数组。 在实际开发中,并不常见,尽量让数组元素规则化(便于进行访问)
数组遍历 普通数组数据的访问都是通过数组元素的下标来实现访问,如果数组中所有的数据都需要依次输出出来,就需要我们使用到一些简化的规则来实现自动或者下标以及输出数组元素。 Foreach遍历语法 : foreach($数组变量 as $下标 =>
值
)
下
标
为
存
数
字
的
话
可
以
不
写
k
e
y
。
在
进
行
数
据
存
储
定
义
的
时
候
,
通
常
二
维
数
组
不
会
两
个
维
度
的
k
e
y
下
标
都
为
数
字
,
一
般
是
一
维
为
数
字
(
无
意
义
)
,
二
维
为
字
符
串
(
数
据
库
表
字
段
)
,
所
以
在
进
行
遍
历
的
时
候
,
通
常
是
只
需
要
针
对
一
维
进
行
遍
历
,
取
得
二
维
数
组
元
素
,
然
后
二
维
数
组
元
素
通
过
下
标
去
访
问
。
F
o
r
e
a
c
h
遍
历
原
理
:
本
质
是
数
组
的
内
部
有
一
颗
指
针
,
默
认
是
只
想
数
组
元
素
的
第
一
个
元
素
,
f
o
r
e
a
c
h
就
是
利
用
指
针
去
获
取
数
据
,
同
时
移
动
指
针
。
1
)
f
o
r
e
a
c
h
会
重
置
指
针
:
让
指
针
指
向
第
一
个
元
素
;
2
)
进
入
f
o
r
e
a
c
h
循
环
:
通
过
指
针
取
得
当
前
的
第
一
个
元
素
,
然
后
将
下
标
取
出
放
到
相
应
的
下
标
变
量
值){ } 下标为存数字的话可以不写key。 在进行数据存储定义的时候,通常二维数组不会两个维度的key下标都为数字,一般是一维为数字(无意义),二维为字符串(数据库表字段),所以在进行遍历的时候,通常是只需要针对一维进行遍历,取得二维数组元素,然后二维数组元素通过下标去访问。 Foreach遍历原理:本质是数组的内部有一颗指针,默认是只想数组元素的第一个元素,foreach就是利用指针去获取数据,同时移动指针。 1)foreach会重置指针:让指针指向第一个元素; 2)进入foreach循环:通过指针取得当前的第一个元素,然后将下标取出放到相应的下标变量
值)下标为存数字的话可以不写key。在进行数据存储定义的时候,通常二维数组不会两个维度的key下标都为数字,一般是一维为数字(无意义),二维为字符串(数据库表字段),所以在进行遍历的时候,通常是只需要针对一维进行遍历,取得二维数组元素,然后二维数组元素通过下标去访问。Foreach遍历原理:本质是数组的内部有一颗指针,默认是只想数组元素的第一个元素,foreach就是利用指针去获取数据,同时移动指针。1)foreach会重置指针:让指针指向第一个元素;2)进入foreach循环:通过指针取得当前的第一个元素,然后将下标取出放到相应的下标变量key中(如果存在),将值取出来放到对应的值变量$value中;(指针下移) 3)进入循环体内部,开始执行; 4)重复2和3,直到2的时候遇到指针取不到内容(指针指向数组最后) For循环遍历数组(适用索引数组):基于已知边界条件(起始和结束)然后有条件的变化(规律),因此for循环遍历数组有相应条件 1)获取数组长度:count(数组)得到数组的长度 2)要求数组元素的下标是规律的数字
While循环遍历数组
|