纯干货,PHP从入门到精通视频教程,只生产优质产品

从入门到精通PHP

从入门到精通PHP

本文是连载文章PHP入门的第二篇文章

建议先阅读前一篇文章:PHP从基础到入门(3)

数组基础

数组是一系列数据的集合,它们按设定的顺序排列成“链形”。

注:php中数组单元的顺序,与下标无关!

数组定义(赋值):

$arr1=array(3、11、5、18、2);//这是最常见的数组,下标为“默认下标”,即从0开始的整数;

$arr2=array(“a”=>3,“bb”=>11,”cc123″=>5,”d1″=>18,”xyz’=>2);关联数组,下标为字符串,常见

$arr3=array(1=>3,10=>11,3=>5,0=>18,88=>2);下标可人为给定;

$arr4=array(1=>3,‘a1’=>11,3=>5mn=>18,88=>2);下标可与字符串混合使用;

$arr5=array(5=>3,11,3=>5,‘mn’=>18,2);//有指定下标,也有“自动下标”,

//此时下标为:5,6,3,mn”,7

//可见,自动下标为“前面最大数字下标” 1”

$arr6=array(5=>3,

7.7=>11,3=>5mn’=>18,2);//此时下标为:5,7,3,mn”,8

$arr7=array(5=>3,true=>11,false=>5,‘mn’=>18,2);//此时下标为:5,1,0,mn”,6

$arr8=array(1=>3,3=>33,true=>11,);///此时下标为:1,3,对应值为:11,33

//如果下标重复,后面的值覆盖前面的值;

$arr9=array(1=>3,-3=>33,11);//此时下标为:1,-3,2,注:最后一个逗号“可以有”。

其他形式:

$ar10[]=3;

$ar10[]=111;

$ar10[]=5;///该数组下标0,1,2,常规情况

$arr11[‘a’]=3;

$arr11[‘bb’]=11;

$ar11[cc123]=5;///这个数组下标为“a’,’bb”,”cc123″,常规情况

$arr12[1]=3;

$ar12[]=111;///此时下标为2

$ar13[cc123]=5;//该数组下标为1,2,cc123

特别注意:在php中,数组单元的顺序是由其“放入”顺序决定的,而不是下标。

数组取值:

$v1=$ar1[0];

$i=3;

$v2=$ar1[$i];//获得数组下标为3的单元的值;

一般来说,获得数组单元的值可以完全相同,看组获得变量的值!!!

数组的分类

按键关系划分:

索引数组:一般认为,如果一个数组的下标严格按照从0开始的连续整数进行下标,则称为索引数组——类似于js数组的下标。例如:

$arr1=array(3、11、5、18、2);//这是最常见的数组,下标为“默认下标”,即从0开始的整数;

关联数组:一般认为,如果一个数组的下标是一个“字符串”,并在一定程度上表示该单元的“含义”,则称为关联数组,例如:

$conf=array(

‘host’=>”localhost”,

‘port’=>3306,

‘username’=>’root’,

‘password”=>”123″,

混合数组:既有数字下标,也有字符下标:

$arr4=array(1=>3,‘a1’=>11,3=>5mn=>18,88=>2);下标可与字符串混合使用;

根据数组的维数(复杂程度)进行评分:

一维数组:

$a=array(1,11,111);

$b=array(2,22,222);

$c=array(3,33,333);

二维数组:

$dd=array(

array(1,11,111),

array(2,22,222),

array(3,33,333)

多维数组:无非是继续用数组代替。

基本使用数组

一维数组的平均值:

寻求二维数组的平均值:

一维数组的最大值:

一维数组的最大值和最小值交换位置:

关于数组的交换,再说两句:

$a=array(3、11、5、7、20、18);//下标0,1,2,3,4

需求1:第0项和第3项交换数组:

$v1=$a[0];

$v2=$a[3];

$t=$v1;

$v1=$v2;

$v2=$t;//这种做法根本不好,因为v1和v2只是两个变量,与数组无关!

正确的做法是:

$t=$a[0];

$a[0]=$a[3];

$a[3]=$t;

需求2:交换数组的第一项和最后一项:

$pos1=0;///第一项下标

$pos2=count($a)-1;///最后一项下标

$t=$a[$pos1];

$a[$pos1]=$a[$pos2];

$a[$pos2]=$t;

需求3:最大和最小的交换数组:

$pos_max=…;//经过一番计算,得到最大项目的下标;

$pos_min=…;///通过计算得到最小项目的下标

$t=$a[$pos_max];

$a[$pos_max]=$a[$pos_min];

$a[$pos_min]=$t;

数组的遍历

foreach基本语法

foreach($数组变量名as【$key=>】$value){

//循环体;这里可以“使用”$key和value;

//$key和$value是该遍历语句一次又一次获得的每个单元(项)的下标和对应值。

//而且,它总是从数组开始,然后按顺序取数据。

数组指针操作及遍历原理:

首先,看看数组的“形象图”:

$arr4=array(1=>3,‘a1’=>11,3=>5mn=>18,88=>2);

视觉上可以理解为:

数组下标:1“a1”3“mn88对应数据:8115182

其中,箭头是数组内的所谓“指针”——注意,不可见,不可输出,只是辅助理解的图形!

1.箭头是数组内部所谓的“指针”

2.默认情况下,该指针指向数组的第一个单元。

3.如果数组相关单元的操作没有指定下标,则是指针指向的单元的操作。

4.所谓遍历,其实就是一次又一次地获得当前单元的键和值,并将相应的变量放入其中$key,$value,然后将指针移动到下一个单元。

数组,作为一个“整体数据单位”,可以使用以下指针操作函数:

1,$v1=current($数组);///获得数组作为指针所在单位的“值”;

2,$v2=key($数组);///获取数组作为指针所在单元的“键”(下标);

3,$v3=next($数组);//先将数组指针移到下(后)单元,然后获得新单元的值;

4,$v4=prev($数组);///先将数组指针移向上(前)单元,然后获得新单元的值;

5,$v5=end($数组);///首先将数组指针直接移动到最后一个单元,然后获得新单元的值;

6,$v6=reset($数组);///首先将数组指针直接移动到第一个单元,然后获得新单元的值;

foreache遍历流程原理图:

foreach($数组变量名as$key=>$value){

//循环体;这里可以“使用”$key和value;

//$key和$value是该遍历语句一次又一次获得的每个单元(项)的下标和对应值。

//而且,它总是从数组开始,然后按顺序取数据。

示意图的基本原理如下:

输出结果为:

可见:遍历后,指针已超过数组的合理位置。

使用for和next遍历数组

注:对于php数组,通常不能简单地使用for循环进行遍历。

换句话说,在php中,for循环只能循环“下标为连续纯整数组”;

each()函数的使用

each()函数的作用:首先获得数组“当前单元”的下标和值(并将其放入数组),然后将指针转移到下一个单元。

使用形式:

$a=each($数组名);///此时$a是一个数组

list()使用“函数”:

list()函数用于一次性获得数组中从0开始的数字下标的多个单元的值!

list($1,$2,$3,..)=$数组;

上述代码相当于以下代码:

$变量1=$数组[0];

$变量2=$数组[1];

$变量3=$数组[2];

注:此处变量的数量应与该数组的数字下标单元相对应。如果某个变量对应的数字下标不存在,则会报告错误!

while each() list()遍历数组

数组变量的一些细节

foreach也是一种正常的循环语法结构,可以操作break和continue。

在整个过程中,默认值变量的传值方式是值传递。

结果为:

可以人工设置为引用传递的全过程中值变量:foreach($arras$key=>&$value){…}

结果为:

默认情况下,foreach是在原始数组上进行的。但是,如果在复制过程中对数组进行了修改或指针操作,复制数组后将继续复制数组上的复制循环(原始数组保持不变)。

以下演示是“foreach默认为原数组上的遍历”的效果:

然后,演示:在某些情况下(修改或指针操作),而不是在原始数组中。

结果为:

如果foreach中的值变量是引用传递,则无论如何都是在原数组上进行的。

声明:无法下载联系客服Q:5664729声明:以上内容(如有图片或视频亦包括在内)为自媒体平台用户上传并发布,不构成投资建议请自行甄别,本网站不拥有所有权,也不承担相关法律责任。如果您发现有涉嫌版权的内容,请联系我们删除。!