php数组Word格式文档下载.docx
《php数组Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《php数组Word格式文档下载.docx(61页珍藏版)》请在冰点文库上搜索。
数字索引数组初始化通常有两种方法。
其中之一是直接为数组元素赋值。
例如要初始化如图3-1所示的数字索引数组,代码如下:
$name[O]="
张明"
;
$name[1]="
李四"
$name[2]="
王小五"
$name[3]="
赵勤"
Sname[4]="
李小平"
当索引值是递增的,可以不在方括号内指定索引值。
默认的索引值从0开始依次增加,即为0、1、2、3、4,如下所示:
$name[]="
Sname[]="
这种不显式地指定索引值的赋值方法,也称简单赋值方法,在初始化索引值连续递增的数组时非常简便。
对于非连续索引的数组,对其初始化可以直接指定索引值,如下所示:
$userID[23]=”001”;
$userID[50]=“015”;
$userID[10]=”784”;
其中数组userID有3个数组元素,其索引值分别为:
23、50、10,它们对应的元素值分别为:
“001”、“015”、“784”。
如果没有指定索引值的元素与指定索引值的元素混在一起赋值时,没有显式指定索引值的元素的默认索引值将紧跟显式指定索引值的元素中的最高的索引值。
例如:
$cities[45]=”南宁”;
$cities[50]=”长春”;
$cities[65]=”北京”;
$cities[]=”哈尔滨”;
其中在数组cities中出现的最高索引值为65,所以值为“哈尔滨”的数据元素的索引值是66。
如果数组不存在,那么为数组元素赋值的同时即可创建该数组,但是检索一个不存在的数组并不会创建该数组。
//数组$person之前没有被定义
echo$person[0];
echo$person;
由于数组$person在使用语句”echo$person[0];
”和“echo$person;
”进行显示输出之前没有被定义,所以不会有输出,并且数组$person也不会就此被创建。
初始化数组的另一种方法是用array()函数。
只需将元素的值作为参数传递给array()函数即可。
$products=array(”橡胶”,”酒”,”汽车”,”化妆品”);
以上代码将创建一个名为$products的数组,其中包含4个数组元素——“橡胶”、“酒”、“汽车”和“化妆品”,默认的索引是0、l、2和3。
若希望输出第3个数组元素的值,那么可以使用以下代码:
echo$products[2];
//输出第3个数组元素“汽车”
如果在初始化时不希望使用默认的索引,可以使用“=>
”运算符给数组元素指定索引。
例如上例中,指定“橡胶”的索引值为5,“酒”的索引值为7,“汽车”的索引值为11,“化妆品”的索引值为15,修改代码如下:
$products=array(5=>
”橡胶”,7=>
”酒”,11=>
”汽车”,15=>
”化妆品”);
在以下的示例中,“橡胶”的索引为0,“酒”的索引为7,“汽车”的索引为ll,“化妆品”的索引为12:
$products=array(”橡胶”,7=>
”汽车”,”化妆品”);
如果要创建一个空数组,只须不传递参数给array()即可,如下所示:
$addresses=array();
如果数组元素是按顺序排列的数字,则在对数组进行初始化时,可以使用range()函数。
range()函数具有3个参数,其中第1个参数指定起始值,第2个参数指定终止值,第3个参数可选,用于指定步长。
$values=range(1,20);
该行代码将建立一个数组元素从1到20的数组。
例如以下代码将创建一个从1到20之间的奇数组成的数组:
$odds=range(1,20,2);
例如以下代码将创建一个数组元素分别为5、4、3、2、1的数组:
$reverse=range(5,1);
当数组元素是连续的字符时,也可以使用range()函数,例如:
$alphabet=range("
a"
"
g"
);
该行代码创建了一个数组元素从“a”到“g”的数组$alphabet。
如果range()函数中的参数指定的是一个字符串,则只有字符串的第一个字母有效,例如以下代码创建的也是一个数组元素从“a”到“g”的数组$alphabet:
aaaa"
,"
gggg"
注意:
在对数组进行初始化时,如果所需的数据保存在另一个数组中,可以简单的使用运算符“=”,直接对数组元素进行复制。
如果数据保存在数据库中,那么还可以从数据库中直接载入数组,完成数组的初始化。
3.2.2访问数组元素
要访问一个变量,可以直接使用变量的名称,若需访问数组中的一个元素,可以使用数组名和索引的组合。
索引在数组名称后面用方括号括起来。
例如有以下数组:
$name=array("
张三"
王小二"
李小明"
);
可以使用$name[0]访问第1个数组元素(“张三”),可以使用$name[1]访问第2个数组元素(“李四”),可以使用$name[2]访问第3个数组元素(“王小二’’),可以使用$name[3]访问第4个数组元素(“李小明”)。
例如显示数组$name的第2个元素的值,代码如下:
echo$name[1];
还可以使用运算符“=”修改数组元素的内容。
例如修改第3个数组元素“王小二”的值为“王亮”,代码如下:
$name[2l=”王亮”;
另外,如果需要新增一个数组元素到数组末尾,可以通过给数组元素赋值的方式直接实现添加。
例如为数组$name添加第5个数组元素“张常乐”,代码如下:
Sname[4]=”张常乐”;
而要显示数组$name中全部元素的内容的话,所用代码如下:
echo“$name[0]$name$name[2]$name[3]Sname[4]”;
需要注意的是,当数组名或变量名被嵌入到双引号中时,如果不能被正确解析,可以尝试将其放到双引号之外。
例如上面代码也可改写为:
echo$name[O].$name[1].$name[2].$name[3].$name[4];
3.2.3利用循环访问数组元素
对于数字索引数组,通常会使用有序的数字作为索引,所以可以简单地使用for循环就可以很容易地访问数组中的元素。
<
?
php
for($i=0;
$i<
3;
$i++)
echo"
$name[$i]"
."
br>
"
>
该代码将循环输出数组$name中的每一个元素值。
也可以使用foreach语句,循环输出数组中的元素,代码如下所示(代码2.php):
foreach($nameas$temp)
echo$temp;
3.3关联数组
数字索引数组在各种编程语言中非常常见。
但对于关联数组,只有使用过PHP或Perl的程序员才不会感到陌生。
关联数组允许数组中每个元素除了可以使用数字索引外,还可以使用字符串作为素引。
如果需要通过名称访问数组中的元素,那么使用字符串作为数组的索引将是非常方便的。
使用字符串作为索引的数组即称为关联数组。
图3-2是一个关联数组的示例。
$name[user1]
$name[user2]
$name[user3]
$name[user4]
$name[user5]
图3-2关联数组
“张明”、“李四”、“王小五”、“赵勤”和“李小平”,其索引值分别为“userl”、“user2”、“user3”、“user4”和“user5”。
例如可以通过以下的语句显示索引为user2的数组元素的值:
echo$name[user2];
注意
使用数字索引数组和关联数组的区别之一在与关联数组以字符串为索引,不能通过简单的加1或减1直接计算出数组中的下一个或前一个的有效索引值。
3.3.1关联数组的初始化
关联数组的初始化可以采用与数字索引数组类似的方法,通过直接为数组元素赋值来完成。
例如要初始化如图3—2所示的关联数组,代码如下:
$name[userl]="
$name[user2]="
$name[user3]="
$name[user4]="
$name[user5]="
也可以使用aray()函数来完成初始化,其中索引值与数组元素值之间需要使用运算符“=>
”。
例如下例为数组$score初始化:
$score=array("
=>
80,
"
李亮"
90,
王平"
67,
张晓红"
77,
赵高"
87);
该语句执行效果等同于:
$score["
]=80;
]=90;
]=67;
]=77;
]=87;
3.3.2访问数组元素
同样,可以使用数组名和索引值的组合来访问关联数组中的元素。
例如下例关联数组:
80,"
90,"
67,"
77,"
可以使用$score["
]访问第1个数组元素(元素值为“80”),可以使用$score["
]访问第2个数组元素(元素值为“90”),可以使用$score["
]访问第3个数组元素(元素值为“67”),可以使用$score["
]访问第4个数组元素(元素值为“77”),可以使用$score["
]访问第5个数组元素(元素值为“87”)。
例如显示索引为“李亮”的数组元素的值,代码如下所示:
echo$score["
];
可以使用运算符“=”修改数组元素的内容。
例如修改索引为“王平”的数组元素的值,由“67”改为“87”,代码如下:
如果需要将一个数组元素新增到数组末尾,可以通过给数组元素赋值的方式直接实现添加。
例如为数组$score添加索引为“杨乐”的数组元素,且数组元素值为99,代码如下:
杨乐"
]=99;
显示数组$score中全部元素的内容,代码如下:
]$score["
]=99"
3.3.3使用循环访问数组
由于关联数组的索引不是数字,所以无法像数字索引数组一样使用for循环对数组进行操作,但仍可使用foreach循环。
45,"
56,"
67,"
56);
echo$temp."
其中foreach循环每循环一次,将数组$name中的数组元素值提取出一个赋予变量$temp,直至数组结束。
也可以使用以下方式,循环提取出数组元素的索引和元素值:
foreach($nameas$key=>
$value)
echo$key."
的成绩为:
.$value."
其中foreach循环每循环一次,将提取出数组$name中的一个数组元素,且将该元素的索引
值赋予变量$key,将元素值赋予变量$value,直至数组结束。
3.4与数组相关的运算
与数组相关的运算包括联合、等于、不等于、恒等、不恒等,相应运算符及示例如表3—1
所示。
表3—1与数组相关的运算
运算符
说明
示例
示例说明
+
联合
$a+$b
将$a与$b联合。
数组$b将被附加在数组$a的后面,但是任何索引值冲突的元素将不会被添加
==
等于
$a==$b
如果$a和$b包含相同元素,返回true
!
=
不等于
$a!
=$b
如果$a和$b不包含相同元素,返回true
$a<
$b
与!
=相同,如果$a和$b不包含相同元素,返回true
===
恒等
$a===$b
如果$a和$b包含相同顺序的相同元素,返回true
!
不恒等
==$b
如果$a和$b不包含相同顺序的相同元素,返回true
例如下例中,对数组$a和数组$b进行联合运算,建立新数组$c,并显示输出数组$c,代
码如下:
$a=array("
$b=array("
张全"
65,"
王刚"
46,"
周大生"
69,"
韩力"
96);
$c=$a+$b;
foreach($cas$key=>
的成绩为:
但当数组中存在重复的索引值时,重复的数组元素将不会被添加,即重复的数组元素不会因联合运算而被覆盖。
其中,数组$a与数组$b都有索引值为“李小明”的数组元素,执行联合运算后,数组$b中的元素“李小明”不会被添加。
3.5多维数组
不仅仅在一个索引值和元素值的简单列表中可以保存数组,而且数组中的每个元素也可以保存一个数组。
如果数组的元素仍为数组,就构成了多维数组。
一个包含数组的数组,称为二维数组,如果二维数组元素仍包含数组,就构成了一个三维数组,依此类推,可以创建四维数组、五维数组等多维数组。
但最常见的是二维数组。
可以把二维数组想像成一个矩阵,或者是一个具有宽度和高度或者行和列的表格。
例如
图3-3是一个学生成绩单,可以用一个二维数组表示。
图3-3二维数组示例
其中每一行表示一个学生记录,每一列分别代表学生的“姓名”、“学号”、“性别”和“成绩”。
在PHP中可以使用如下代码建立图3-3所示的二维数组:
可以看到创建的二维数组名为$info,其中包括3个子数组。
访问数组只需使用数组的名称和索引值即可。
其中一维数组的索引值是一维的,而二维数组的索引值则具有行和列两个维度值(通常最上边的是第0行,最左边的是第0列)。
必须使用二维索引值才能正确定位到二维数组元素。
例如以下代码可以按照从左至右、从上至下的顺序显示图3-3所示的二维数组元素:
$info=array(array("
0001"
男"
89"
),
array("
0056"
92"
王红"
0077"
女"
95"
));
h2>
输出二维数组\$info的数组元素<
/h2>
|"
.$info[0][0]."
.$info[0][1]."
.$info[0][2]."
.$info[0][3]."
|<
.$info[1][0]."
.$info[1][1]."
.$info[1][2]."
.$info[1][3]."
.$info[2][0]."
.$info[2][1]."
.$info[2][2]."
.$info[2][3]."
该代码的执行结果如图3-4所示:
图3-4访问二维数组元素
此外也可以使用双层for循环来访问二维数组,例如:
使用for循环访问二维数组<
for($row=0;
$row<
$row++)
{
for($column=0;
$column<
4;
$column++)
{
echo"
.$info[$row][$column];
}
}
该代码的执行结果如图3-5所示。
图3-5使用for循环访问二维数组
以上示例中建立或访问的都是二维数字索引数组,为了便于记忆也可以建立二维关联数组。
例如按图3-3所示的逻辑关系建立二维关联数组如下:
$info=array(
姓名"
学号"
性别"
成绩"
对于二维关联数组不能简单地使用两层for循环来完成遍历,必须在每层循环中正确指定索引名称。
例如下列代码循环显示二维关联数组中的元素:
.$info[$row]["
]."
三维数组具有高、宽、深三个维度的概念,是一个包含了数组的数组的数组,形式上类似于组织在一起的多个二维表。
图3-6所示是计算机系、中文系和数学系的学生成绩单,具有三维属性,可以按三维数组进行组织。
图3-6三维数组示例
可以看到,所建立的三维数组采用了默认的数字索引方式,所以可以通过嵌套for循环
来显示该三维数组的内容,代码如下所示:
$grade=array(array(array("
0301"
0356"
03337"
)
),
array(array("
王国"
0101"
79"
0256"
62"
0277"
张艺"
0004"
周华"
0026"
32"
杨红"
0057"
65"
)
);
使用for循环输出三维数组<
for($layer=0;
$layer<
$layer++)
输出第$layer维:
<
for($row=0;
.$grade[$layer][$row][$column];
该代码执行结果如图3-7所示。
图3-7使用for循环输出三维数组
3.6数组的排序
对数据进行排序是各类应用中经常遇到的操作。
常用的排序算法包括插入排序、冒泡排
序、堆排序、希尔排序和快速排序。
PHP为了简化对数组的排序,提供了大量能以多种不同
方式对数组进行排序的函数。
PHP默认的排序函数都会按英语的习惯规则进行排序。
如果需要按另一个种语言的约定进行排序,比如法语或德育,需要修改系统默认值。
可以使用setlocale()函数对本地语言环境进行设置。
3.6.1函数sort():
按数字和字母顺序排序
sort()函数是PHP所提供的排序函数中最简单的一个函数。
sort()函数会按数字和字母的顺序(先数字后字母)重新排列数组元素。
sort()函数的格式如下:
booleansort(arraytarget_array[,intsort_flags])
其中“target_array”是需要进行排序的数组名,各元素会按由低到高的顺