数组基础
Php中,数组的下标可以是整数,也可以是字符串
Php中,数组的元素顺序不是由下标决定的,而是由其“加入”的顺序决定。
定义:
array(1,5,1.1,”abc”,true,false); //可以存储任何数据,此时为“默认下标”
array(2=>1,5 =>5,7 =>1.1, 3=>”abc”, 0=>true); //下标可以任意设定(无需顺序,无需连续)
l 可以加下标,也可以不加(默认下标),默认下标规则:前面已经用过的最大数字下标+1。
l 可以是数字下标与字符串下标的混合形式,同样遵循默认下标规则
l 负数下标不算在整数下标中,只当作字符下标
l 浮点数下标自动转换为整数,且直接抹掉小数
l 纯数字字符串下标,当作数字看待
l 布尔值当下标,则true为1,false为0
l 如果下标跟前面的重复,则单纯覆盖前面同名下标的值
其他形式:
$arr1[ ]=1.1;//直接在变量后面使用[],就成为数组,并依次赋值,与array的语法结构一致
取值:通过下标
赋值(同定义)
数组分类
从键值关系:
关联数组:通常指下标为字符串,并且该字符串大体可以表示出数据的含义的数组
例:$person=array(
“name”=>”小明”;
“age”=>15;
)
索引数组:指一个数组的下标是从0开始的连续的数字下标—跟js数组一样
从数组层次来分:
一维数组
二维数组
多维数组
一般语法形式:$v1=数组名[下标][下标]…
数组遍历
遍历基本语法
foreach($arr as [$key=>]$value){
//对$key(元素下标)和$value(元素值)进行操作
//此循环结构从数组的第一项一直遍历循环到最后一项,然后结束
}
数组指针和遍历原理
每一个数组,其内部都有一个指针,该指针指向数组某元素时,取到该元素
foreach遍历过程中,依赖指针进行。
其他函数也依赖于该指针:
$v1=current($arr1);//取得$arr1中当前指针所指向的元素的值,如果没有指向元素,则为false
$v1=key($arr1);//取得$arr1中当前指针所指向的元素的下标,如果没有指向元素,则为false
$v1=next($arr1);//将指针移向“下一个元素”,然后取得该下一个元素的值
$v1=prev($arr1);//将指针移向“上一个元素”,然后取得该上一个元素的值
$v1=reset($arr1);//将指针移向“第一个元素”,然后取得该元素的值(数组初始化)
$v1=end($arr1);//将指针移向“最后一个元素”,然后取得该元素的值
$v1=each($arr1);//取得当前元素的下标和值,然后移动到下一个位置
For+next+reset遍历数组
reset($arr1);
$len=count($arr1);
for($i=0;$i<$len;$i++){
$key=key($arr1);
$value=current($arr1);
//对变量进行操作
next($arr1);
}
While+each+list遍历数组
Each()函数:取得当前元素的下标和值,再放入到一个新的数组中,然后移动到下一个位置
该新的数组,有4个元素,存储了下标和值各两个:
Array{
1=>(取出来的值)
‘value’=> (取出来的值)
0=> (取出来的下标—键名)
‘key’=> (取出来的下标—键名)
};
List()函数:
使用形式
list($v1,$v2,$v3,$v4…)=数组$arr1;
作用:依次取得数组中下标为0,1,2,3,。。。的元素的值,并一次性放入多个变量中(一一对应)
相当于如下语句:
$v1=$arr1[0];
$v2=$arr1[1];
$v3=$arr1[2];
注意:只能实现从0开始的连续数字下标的元素的取值(数组元素的顺序不要求)
然后使用两个函数与while实现数组遍历:
形式:
reset($arr1);
while(list($key,$value)=each($arr1))//从数组中依次取元素,当each到数组最后时,返回//false,循环结束
{
//对元素进行操作
}
Foreach遍历细节探讨
1.可以有break和continue
2.默认是值传递(值变量)
3.可设定为引用传递(值变量),键变量不可设为引用传递
Foreach($arr as $key=>&$value){…}
4.Foreach默认是原数组上进行遍历,但如果在遍历过程中对数组进行了某种修改或某种指针性操作,则会在复制的数组上继续遍历循环。
5.Foreach中如果指变量是引用传递,则无论如何都在原数组上进行