数组
/**
* 自定义一个打印数组的函数
*/
注释用/+**+回车
一.数组的概念
一组数据的集合。PHP中数组也是一组变量。
(1)也可以看做是键值对的集合。可以使用键来获取相应的元素的值。
(2)键分为2类:数值键和关联键(数值和字母的混合字符串)
(3)数组分为3类:索引数组(键是数值键)、关联数组(键是关联键)、多维数组
二.数组的声明
(1)直接给元素赋值
$arr1[0]='zsxy';
$arr1[2]='dx';
$arr1[3]='tt';
(2)用array()函数定义数组
$arr2=array('sxj','jjn','qxm',100,true);
‚在array()函数里给出键和值
$arr3=array('name'=>'mzj','sex'=>'男','age'=>18,'school'=>'工程大');
ƒ 使用直接赋值方式来定义一个关联数组
$arr4['name1']='ys';
$arr4['name2']='yw';
关联数组中的键可以不加引号???
经证明:必须加引号!!不然会报错
(3)多维数组的定义
1、声明一个二维数组
在array函数中直接给出键值
$groupB[‘x']=array('name'=>'yw','sex'=>'男' ,'age'=>18,'school'=>'工程大')
获取二维数组中的元素(例如成员2中的name)
echo $groupAa['成员2']['name'];
‚$groupBb['成员1']['name']='yw';
$groupBb['成员1']['sex']='男';
$groupBb['成员1']['age']=18;
$groupBb['成员1']['school']='工程大';
2、声明一个三维数组
直接赋值
‚用array()函数
三.数组的遍历
1.用for循环遍历数组
使用for()循环的前提是:明确要循环的次数
PHP中使用count()函数来获取数组长度,写法是count(数组名)
使用for()循环可以遍历索引数组,不能遍历关联数组
2.使用foreach()循环
只获取到键值($v和$k是用户随便定义的)
foreach ($arrSu as $v){
echo $v."- ";
}
‚同时获取到键名和键值
foreach ($arrSu as $k=>$v){
echo $k."=>".$v."<br/>";
}
使用foreach()循环可以遍历索引数组,也可以遍历关联数组
3.使用list()、each()、while()循环联合遍历数组
list()函数:使用数组中的元素给一组变量赋值
‚list()函数赋值时,依次从数组中取索引从0开始的元素,即如果有两个变量,则把索引为0和1的元素赋过去,。。。如果没有找到,则报错
也就是如果list()中有3个变量,则数组必须含有0,1,2索引才可以赋值成功
(1)注意:list()函数只适用于索引数组,且假定数组索引从0开始
(2)list()中变量的个数可以不等于数组长度
问题:foreach()与each()的区别与联系
each()函数:
返回一个(由数组当前内部指针所指向的元素)的键名和键值组成的数组,
并把内部指针向前移动。该数组中包含4个元素,键名分别是1、value、0、key。
1=>当前内部指针所指向的元素的键值
value=>当前内部指针所指向的元素的键值
0=>当前内部指针所指向的元素的键名
key=>当前内部指针所指向的元素的键名
四.数组运算符
1、联合运算符+:把右边的数组附加到左边数组的后面,
注意:对于两个数组中重复的键名(索引),
则只取+号左边的数组中的元素值,右边的被忽略
2、相等运算符==(不相等!=或者<>)
键名相同,键值相等
(1)键名相同时,数值型和字符串类型数字的元素视为相等;true==1
(2)当两个数组有相同的键值对时,即使存放顺序不一样,也是相等的
3.全等运算符===
(1)键值对相同,键名和键值的数据类型也一致,并且存放顺序一致,则视为全等。
(2)键名相同时,数值型和字符串类型数字的元素不全等(键值)
(3)键值对相同,但是存放顺序不一致时,也不全等
五.预定义数组
预定义数组:$_GET;$_POST