一、数组基础
数组是一种复合类型的数据。它主要是用来存储多个数据!在PHP中的数组元素的数据类型可以是任意数据类型!
数组的组成
数组它是由一个一个的元素(element)来组成!
每一个数组元素它又分为两个部分来组成!元素是由下标和值组成
元素的下标称之key(键) 键名
元素的值称之为value(值)
所以我们一般将其称这为”key/value 键值对”
数组的分类
在PHP中数组分为”索引数组和关联数组”
如何去区分索引数组和关联数组是通过数组的下标来进行区分。
索引数组的下标是数值
关联数组的下标是字符串
因为下标与值之间是有关系的,这一种就称之为关联数组!
创建数组
显式的创建
使用array()这个函数来创建
隐式的创建
使用[ ]
来创建
- 在创建的时候指定对应的下标值
- 在创建的时候不指定对应的下标
使用数组的方式来实现斐波那契数列
多维数组
PHP本身是没有多维数组的概念 ,因为数组元素的数据类型是任意的 ,如果一个数组元素的类型它还是一个数组 那么这种数组我们就称之为多维数组。
访问数组元素
使用下标来进行访问!
格式:
1 | 数组变量名[下标] |
举例:
索引数组:数组变量名[索引下标]
关联数组:数组变量名[‘字符下标’]
使用二维数组来打印杨辉三角
//每一层的个数与当前层数相同
//每一层的第一个数与最后一个数都为1
//当前层数的第n列的数它等于当前层数-1的n-1列与当前层数-1的n列
二、数组的遍历
使用foreach遍历数组
遍历:依次访问数组的每一个元素!
第一种格式:
键名与值是两个变量 这个变量可以随意定义 它就表示当前数组的key与value
有些时候key对于我们来没有太大的用处 我们就将其省略不写!
第二种方式:
使用for循环来遍历索引数组
三、数组的指针
每一个数组元素上面都对应一个指针。如果我们第一次使用指针的方式来访问数组。那么数组的指针会指向当前元素。
key
获取到当前数组指针指向的元素的键名(下标)
current
获取到当前数组指针指向的元素的值
next
将数组的指针向下移一位
返回数组内部指针指向的下一个单元的值,或返回 false。 当数组的指针已经移出去了就会返回false!
reset
将数组中的指针进行重置
prev
将数组的指针向上移一位
end
将数组的指针移动到最后一位
思考一下:我们能不能使用数组的指针加上for循环对关联数组进行遍历!
四、使用while--list--each来遍历数组
each
each函数它集合了key,current,next这三个函数的功能!这个each它返回的是一个数组!
这个数组里面的元素共4个。有两个元素分别是索引下标,有两个元素分别是字符下标!
其中索引下标:下标为0的表示原数组的中的key值,下标为1的表示原数组中value值
其中字符下标:下标为key的表示原数组的中的key值,下标为value的表示原数组中value值
如果我们要访问each这个函数的访问数组中的数组元素:
访问到原数组的key值:\$each[0]或者\$each[‘key’]
访问到原数组的value值:\$each[1]或者\$each[‘value’]
接下来我们要使用while+each来遍历数组
list
作用:将一个索引数组下标为0的元素赋值给list这个函数中第一个参数,下标为1的赋值给list函数中的第二个参数…….依次类推!
使用while+list+each来遍历数组!
五、数组相关函数
count
获取数组的长度 数组中元素的总个数
1 | int count (mixed $var [, int $mode = COUNT_NORMAL ] ) |
mixed \$var:数组变量名
第二个参数:如果这个参数的值为true ,表示支持递归统计。
range
建立一个包含指定范围单元的数组
1 | array range ( mixed $start , mixed $limit [, number $step = 1 ] ) |
第一个参数:开始的位置
第二个参数:结束的位置
第三个参数:表示步长值
array_merge
1 | array array_merge ( array $array1 [, array $... ] ) |
将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
合并数组时:
- 如果是索引下标的数组:如果下标重复 重新给其进行定义下标
- 如果是字符下标的数组:如果下标重复 后面的数组会将前面的数组覆盖
array_rand
从数组中取出一个或多个随机的数组元素的key 返回一个新的索引数组
1 | mixed array_rand ( array $input [, int $num_req = 1 ] ) |
第一个参数:数组名
第二个参数:缺省值为1 表示从原数组中取出多少个元素
shuffle
将原数组打乱
1 | bool shuffle ( array &$array ) |
array_flip
将数组中的键与值交换
验证码:
in_array
1 | bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) |
第一个参数 mixed \$needle :要查找的元素
第二个参数:在那一个数组中查找
返回bool
判断数组中是否存在指定的元素!如果有返回true,如果没有返回false
array_keys
将这个数组中的键名获取到 返回一个新的索引数组
1 | array array_keys ( array $array [, mixed $search_value [, bool $strict = false ]] ) |
array_values
1 | array array_values ( array $input ) |
返回原数组中所有的值并给其建立索引数组。
array_key_exists
判断数组中是否存在指定的键名 如果有就返回true 如果没有就返回false
1 | bool array_key_exists ( mixed $key , array $search ) |
mixed \$key:查找的键名
array \$search:要在哪个数组中进行查找
implode
它有一个别名函数:join()
将一个数组的中元素连接为一个字符串
1 | string implode ( string $glue , array $pieces ) |
string \$glue:这个参数表示是指定的连接符号
array \$pieces:将指定的数组进行连接
explode
将一个字符串分割为一个数组
1 | array explode ( string $delimiter , string $string [, int $limit ] ) |
参数说明:
string \$delimiter:指定的分隔符
string \$string:指定的字符串
max
1 | mixed max ( array $values ) |
返回当前数组中的最大值
min
1 | mixed min ( array $values ) |
返回当前数组中的最小值
七、数组的排序函数
sort
对数组元素进行升序 重新生成了一个新的数组!这个数组的键名与值是重新进行排列!
asort
也是对数组元素进行升序排序 但是保留了原数组的下标与值之间的关系!
rsort
对数组进行降序排序
重新生成了一个新的数组!这个数组的键名与值是重新进行排列!
arsort
也是对数组元素进行降序排序 但是保留了原数组的下标与值之间的关系!