概述需求:获得个人信息(姓名,性别,年龄,身高,体重。。。。。。) $name = ‘犬夜叉’; $gender = ‘公’; $age = 200; $height = 180; $weight = 140;得到犬夜叉的个人信息 $name,$gender,$age,$height,$weight数组就可以实现以上需求。1.什么是数组? 数组就是在内存里有一块连续的内存空…
需求:获得个人信息(姓名,性别,年龄,身高,体重。。。。。。)
$name = ‘犬夜叉’;
$gender = ‘公’;
$age = 200;
$height = 180;
$weight = 140;
得到犬夜叉的个人信息
$name,$gender,$age,$height,$weight
数组就可以实现以上需求。
1.什么是数组?
数组就是在内存里有一块连续的内存空间(堆空间),这里面可以保存多个数据,数据没有数据类型的限制。
2.PHP数组与其他语言的数组区别?
a)PHP数组没有长度限制,其他语言C必须事先指定数组长度,如果超出长度,就称之为溢出。
b)PHP数组没有数据类型限制,其他语言C在事先必须声明数组能存储的数据类型。
c)数组的下标可以是数值也可以是字符串。
数组基本语法
关键字array
显示数组语法
$arr = array(元素1,元素2,元素3…); //数据类型一定是数组
隐式数组语法
$arr[] = 元素1; //定义一个$arr变量,将元素1添加进来
$arr[] = 元素2; //将元素2添加到$arr变量中
访问数组
数组本质是变量,访问的时候就是直接使用变量,但是因为数组元素有多个,而系统没有办法直接区分到底用户是访问的哪一个,所以需要用户在访问数组的时候,使用数组下标(键名)
语法:$数组变量[下标]
数值下标:$arr[数值]
字符串下标:$arr[‘字符串’]
数组分类
根据数组的下标的不同进行分类
索引数组:当前数组的下标(键名)全是数字(整型)
关联数组:当前数组的下标全是字符串(使用最多)
混合数组:数组的下标既有数字又有字符串
索引数组
定义方式:系统自动分配下标
定义方式:用户手动分配下标
第一种
第二种
第三种
系统分配所引方式
1.系统是0开始分配下标,依次递增1
2.用户可以手动分配下标(下标不能重复:重复的效果就是覆盖)
3.如果用户在某一处指定了下标,那么后续元素自动分配的下标从前面的最大值(索引)开始
关联数组
定义关联数组
显示
隐式
访问关联数组
关联数组
1.下标必须使用引号包含
2.下标不允许重复,重复会覆盖
数组在内存的形式
新建数组内存关系
访问数组内存关系
数组遍历
将数组里面的所有元素都取出来。
count():对数组长度进行计算,返回数组元素的个数(长度)
for循环遍历数组
要求:
1.数组必须是索引数组
2.所以必须是连续的索引
3.索引必须从0开始
如果数组是一个关联数组,那么就完全不能使用for循环来进行遍历。PHP提供了一个foreach来实现对数组元素的遍历
语法:foreach(数组 as 键值对$key => $value){
//使用$key当做当前元素的下标
//使用$value当做当前元素的值
}
foreach原理
数组指针
每个数组都默认有一个指针(定位符),默认指向数组的第一个元素。如果在对数组使用循环遍历,那么该指针会在访问指针当前所指向的元素之后,将自己向下移动一位,指向下一个元素的地址。如果当指针遍历完最后一个元素,指针会继续下移,从而移除数据空间(元素),从而再次对数组元素进行访问的时候,返回FALSE。
函数遍历数组
each():每次从数组中获取当前数组指针所指向的元素,返回一个有四个元素的数组(关联+索引),并且将数组的指针下移一位
each访问数组元素得到关联索引混合数组
指针下移
each在得不到数据(数组指针指向数组最末,没有元素)的时候返回FALSE
foreach重置指针
each本身不能重置数组指针
使用each循环遍历数组
循环条件是一个赋值表达式
List使用
List是一个语法结构,将得到的数组里的元素,必须是以0开始的索引元素,对应的赋值给List所指定的变量里。
语法:List($first,$second,$third) = array(‘张无忌’,20,’男’,’乾坤大挪移’);
<=========>
$first = ‘张无忌’;
$second = 20;
$third = ‘男’;
因为each返回的结果里有两个索引元素0和1,所以一般使用List与each进行配对使用
List+each+while循环遍历数组
List搭配each的好处:能够直接将数组的元素取出来,且赋值给变量,而在后续的程序中可以直接使用变量来 *** 作。
二维数组
数组的元素的值是一个数组数据类型。
array(
‘person1’ => array(‘name’ => ‘张无忌’,’age’ => 20,’power’ => ‘九阳神功’),
‘person2’ => array(‘name’ => ‘周芷若’,’age’ => 18,’power’ => ‘九阴白骨爪’)
);
二维数组元素访问
遍历二维数组
数组的增删改查(二维数组)
$arr = array(); //新增
$arr[] = ‘泰山’; //新增元素
$arr[0] = ‘衡山’; //修改元素
echo $arr[0]; //查看元素
unset($arr[0]); //删除元素
数组相关的函数
key:获取当前数组当前指针所指向元素的下标
current:获取当前数组指针所指向的元素的值
next:返回数组当前指针所指向的下一位的元素的值,并指针下移一位
注意:如果当前指针已经在数组元素的最后一个元素,那么next返回FALSE,指针依然下移一位,移除了数组
prev:返回当前指针所在位置的前一个元素的值,并且将指针向前移动一位
注意:如果当前指针已经在数组元素的第一个元素,那么使用Prev将会将数组的指针移除数组,返回FALSE
如果指针一旦移除数组,那么都不能通过prev或者next将指针拉回来。
end :获取数组元素最后一个元素的值,指针也会指向最后一个元素
注意:end函数与Reset函数有异曲同工之妙,也能把移除数组的指针给重置回来
reset:重置数组的指针,让数组指针指向第一个元素,如果成功返回第一个元素的值,失败返回FALSE
注意:如果数组第一个元素被删除,那么指针重置之后,是第二个元素(从第一个有效元素开始)
函数对数组进行遍历
array_keys:获取数组的所有下标,返回一个索引数组,数组元素的值都是目标数组的下标
array_values:获取数组所有的值,返回一个索引数组
即便是针对二维或者多维数组,那么结果也是一样的
数据结构模拟函数
栈:先进后出,压栈(把数据加入到栈里),出栈(把栈里的数据d出来)
队列:先进先出,入队(从数组尾端插入数据),出队(把数组的元素,从头部出来)
以下四个函数
1.都是对原数组进行 *** 作。
2.都会重置数组里面的索引。
array_push:从数组的尾端加入一个元素(压栈)
array_pop:从数组的尾端d出一个元素(出栈)
array_shift:从数组头部将数组元素移出
array_unshift:从数组的头部插入数据
数组与字符串之间的转换
explode:将字符串按照指定的分隔符分解成一系列小的字符串,都成为数组的一个元素
implode:将一个数组里的所有的元素按照某个分隔符进行拼接,变成一个字符串
//CAPTCHA:验证码,制作验证码随机字符串
range:按照ASCII码能够指定范围,自动生成数组元素的函数
array_rand:从数组中随机取出指定长度的个数的元素下标
shuffle:将原来的数组里的元素打乱
数组合并:+和array_merge()
+:保存第一个数组的所有元素,如果后面的数组的元素与前面数组的元素的下标相同,那么就忽略,如果不同则加到第一个数组里,最终返回一个数组
array_merge():先保留第一个数组的所有元素,如果后面数组的元素与前面数组的元素关联下标相同则用后面数组的元素覆盖前面的;如果是索引下标,直接添加到第一个数组后面,重置索引。
随机读取字符串的字符形式生成随机验证码
数组的比较
数组的比较主要是比较数组长度,数组元素的值
==和===
==:要求数组长度一致,数组元素的值相等,下标也要相等
===:数组长度一致,值和类型都完全一致,出现的顺序必须也相同
排序算法
冒泡算法,快速排序,选择排序和插入排序。
排序算法的要求
1.数组元素都必须的是数值
原理
代码
总结
以上是内存溢出为你收集整理的PHP数组全部内容,希望文章能够帮你解决PHP数组所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容