我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

本文是 PHP 入门系列文章的第二篇

建议先看上一篇文章:PHP从基础到入门(三)

数组

数组基础知识

意义:

数组是按照既定顺序排列成“链状”的数据集合。

注意: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=>5, 'mn'=>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=>5, 'mn'=>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。注意:最后一个逗号“可以存在”。

其他一些形式:

$arr10[] = 3;

$arr10[] = 11;

$arr10[] = 5; //数组下标分别为0,1,2,正常情况

$arr11['a'] = 3;

$arr11['bb'] = 11;

$arr11['cc123'] = 5; //数组下标分别为'a','bb','cc123',正常情况

$arr12[1] = 3;

$arr12[] = 11; //此时下标为2

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

特别注意:在PHP中,数组元素的顺序是由“放进去”的顺序决定的,而不是下标。

数组值:

$v1 = $arr1[0];

$i = 3;

$v2 = $arr1[$i]; //获取数组中索引 3 的单元格的值;

一般来说,获取数组中单元格的值与获取变量的值完全相同!

阵列的分类

根据键值关系:

索引数组:一般认为,如果一个数组的下标都是从0开始的严格连续的整数,就称为索引数组——类似js数组的下标。例如:

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

关联数组:一般认为,如果一个数组的下标是一个“字符串”,且在某种程度上代表了单位的“含义”,则称为关联数组,例如:

$conf = 数组(

‘主机’=>“”,

‘端口’=>3306,

''=>'根',

'' => '123' ,

(英文):

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

$arr4 = array(1=>3, 'a1'=>11, 3=>5, 'mn'=>18, 88=>2 ); 下标可以与数字和字符串混合;

根据数组的维度(复杂度):

一维数组:

$a = 数组(1, 11, 111);

$b = 数组(2, 22, 222);

$c = 数组(3, 33, 333);

二维数组:

$dd = 数组(

数组(1,11,111),

数组(2,22,222),

数组(3,33,333)

(英文):

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

数组的基本使用

求一维数组的平均值:

php while list each_php while list each_php while list each

求二维数组的平均值:

php while list each_php while list each_php while list each

查找一维数组的最大值:

php while list each_php while list each_php while list each

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

php while list each_php while list each_php while list each

php while list each_php while list each_php while list each

关于阵列交换还有两句话:

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

要求 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:交换数组的最大项与最小项:

$ = ....; //经过一些计算,得到最大项的下标;

$ = ....; //经过一些计算,得到最小项的下标

$t=$a[$];

$a[$] = $a[$];

$a[$] = $t;

数组遍历

基本语法

( $array 变量名称为【$key =>】 $value ){

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

//$key和$value就是通过一遍遍遍历语句得到的数组每个单元(item)的索引和对应的值。

// 而且,它总是从数组的开头按顺序获取数据。

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

首先我们来看一下数组的“图像”:

$arr4 = 数组(1=>3,'a1'=>11,3=>5,'mn'=>18,88=>2);

可以形象地理解为:

数组下标:

“a1”

“嗯”

88

对应数据:

11

18

箭头就是数组内部所谓的“指针”,注意它是不可见的,无法输出,只是为了辅助理解的图形!

阐明:

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

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

3.对数组元素的操作,如果没有指定下标,则对指针指向的元素进行操作。

4.所谓遍历,其实就是一次次的获取当前单元的key和value,放入对应的变量$key,$value中,然后移动指针到下一个单元。

那么,数组作为一个“一般的数据单位”,有如下指针操作函数可用:

1、$v1 = ($array); //获取数组中单元格的“值”作为指针;

2、$v2 = key($array); //获取数组中单元格的“键”(下标)作为指针;

3、$v3 = next($array); //先将数组的指针移动到下一个(最后一个)单元,然后获取新单元的值;

4、$v4 = prev($array); //先将数组的指针移动到前一个单元,然后获取新单元的值;

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

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

php while list each_php while list each_php while list each

遍历过程示意图:

( $array 变量名称为 $key => $value ) {

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

//$key和$value就是通过一遍遍遍历语句得到的数组每个单元(item)的索引和对应的值。

// 而且,它总是从数组的开头按顺序获取数据。

基本原理图如下:

php while list each_php while list each_php while list each

php while list each_php while list each_php while list each

输出为:

php while list each_php while list each_php while list each

可以看出,遍历完之后,指针已经超出了数组的合理位置。

使用 for 和 next 迭代数组

注意:对于 PHP 数组,通常不能简单地使用 for 循环来遍历它们。

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

php while list each_php while list each_php while list each

结果:

php while list each_php while list each_php while list each

each() 函数的使用

each()的作用是先取得一个数组的“当前单元”的下标和值(并放入数组中),然后移动指针指向下一个单元。

使用形式:

$a = each($array name); //现在 $a 是一个数组

php while list each_php while list each_php while list each

使用 list() “函数”:

list()函数用于一次性获取数组中多个单元格的值,这些单元格的数值下标从0开始!

形式:

列表($变量1,$变量2,$变量3,..)= $数组;

影响:

上面这行代码等同于下面的代码:

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

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

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

........

注意:这里的变量个数必须和数组数值下标的单元格对应,如果某个变量对应的数值下标不存在,则会报错!

php while list each_php while list each_php while list each

while+each()+list() 遍历数组

php while list each_php while list each_php while list each

关于数组变量的一些细节

它也是一个普通的循环语法结构,可以有break等操作。

遍历过程中传递值变量的默认方式是按值传递。

php while list each_php while list each_php while list each

结果是:

php while list each_php while list each_php while list each

遍历过程中,可以手动将value变量设置为引用传递: ($arr as $key => &$value) { ... }

php while list each_php while list each_php while list each

结果是:

php while list each_php while list each_php while list each

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

下面演示一下“默认遍历原始数组”的效果:

然后论证了在某些情况下(修改或者指针操作),原始数组不会被遍历。

php while list each_php while list each_php while list each

结果是:

php while list each_php while list each_php while list each

如果值变量是通过引用传递的,则它总是在原始数组上执行。

php while list each_php while list each_php while list each

php while list each_php while list each_php while list each

二维码
扫一扫在手机端查看

本文链接:https://by928.com/4150.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线