本书内容包括PHP开发环境、PHP语言基础、PHP数组与字符串、PHP面向对象程序设计、构建PHP互动页面、MySQL数据库基础、PHP访问MySQL数据库、PHP常用功能模块、PHP安全编程、学生学籍成绩管理系统开发实例等。学生学籍成绩管理系统开发实例通过开发一个实用系统来阐述PHP的开发技术和技巧。按照软件产品开发的规范与流程, 对系统进行需求分析、数据库设计以及功能模块的划分, 有利于读者了解一个实际项目的开发流程。
第3章PHP数组与字符串
数组和字符串是PHP中最为重要的两种数据类型,曾有人做过统计,在PHP的项目开发中,至少有30%的代码要处理数组,另有30%以上的代码在操作字符串,两者合计占PHP代码比重高达60%以上,故本章专门讲述这两类数据的操作。
学习目标
掌握PHP数组的定义与操作。
掌握PHP字符串的定义与操作。
了解正则表达式及其使用。
3.1数组及处理
数组把若干数据有序地组织在一起。本节介绍如何创建和初始化数组,以及对数组的各种处理。
3.1.1数组的创建和初始化
1.使用array()函数创建一维数组
使用array()函数的语法格式如下:
数组名=array([键名=>]值,...,[键名=>]值);
每个元素包括键名和值两项,键名可以是整数或字符串。如果全部值未指定键名,则键名默认为从0开始的连续整数。如果只有某些值未指定键名,则该值的键名默认为该值前面最大的整数键名加1后的整数。例如:
$arr1=array(1,2,9,10);//定义不带键名的数组
$arr2=array("color"=>"blue","name"=>"pen");//定义带键名的数组
$arr3=array(1=>5,2=>6,4=>1,9,10);//个别元素没有键名
?>
说明:数组$arr1的键名为整数键名,分别为0、1、2、3。数组$arr2的键名为字符串键名,分别为"color"和"name"。数组$arr3的键名分别为1、2、4、5、6。
对于数组,在调试程序时可以用print_r函数来显示数组各元素的键名和值,print_r函数的语法格式如下:
print_r(数组名)
例如:
$arr1=array("a"=>5,"b"=>10,20);
print_r($arr1);//输出:Array([a]=>5[b]=>10[0]=>20)
echo"
";
$arr2=array(2=>4,"color"=>"red",5,3=>7);
print_r($arr2);//输出:Array([2]=>4[color]=>red[3]=>7)
?>
注意:在数组$arr1中,第3个值20的键名为0;在数组$arr2中,第3个值5被系统自动设置键名为3,但是由于后面又有3=>7自定义了一个键名3,因此后面的值7覆盖了前面相同键名的值。
数组创建之后,可以使用“数组名[键名]”的形式来访问一维数组元素,例如:
$arr1=array("a"=>5,"b"=>10,20);
echo$arr1["a"];//输出:5
echo$arr1["b"];//输出:10
echo$arr1[0];//输出:20
?>
数组创建之后,可以使用count()和sizeof()函数获得数组元素的个数,例如:
$array=array(1,2,3,6=>7,8,9,5,10);
echocount($array);//输出:8
echosizeof($array);//输出:8
?>
2.使用array()函数创建二维数组
通过对array()函数的嵌套使用,可以创建二维数组,语法格式如下:
数组名=array([键名1=>]array(值1,...,值n),
[键名2=>]array(值1,...,值n)
);
说明:内层的每个array()函数表示一行,键名表示行号。若省略键名,则默认为从0开始的连续整数。
二维数组元素的表示形式如下:
数组名[键名1][键名2]
例如:
$arr1=array("color"=>array("红色","绿色","蓝色"),
"number"=>array(1,2,3,4,5)
);
echo$arr1["color"][0],$arr1["number"][4];//输出:红色5
print_r($arr1);
echo"
";
$arr2=array(array("红色","绿色","蓝色"),array(1,2,3,4,5));
echo$arr2[0][0],$arr2[1][4];//输出:红色5
print_r($arr2);
?>
程序解释:print_r($arr1)语句的运行结果为Array([color]=>Array([0]=>红色[1]=>绿色[2]=>蓝色)[number]=>Array([0]=>1[1]=>2[2]=>3[3]=>4[4]=>5))。
print_r($arr2)语句的运行结果为Array([0]=>Array([0]=>红色[1]=>绿色[2]=>蓝色)[1]=>Array([0]=>1[1]=>2[2]=>3[3]=>4[4]=>5))。
3.使用变量名建立数组
通过使用compact()函数,可以把多个变量,甚至数组紧凑成一个数组,其中,变量名成为数组元素的键名,变量值成为数组元素的值。语法格式如下:
数组名=compact("变量名",...["数组名"])
举例如下:
$num=8;
$str="abc";
$arr=array(2,4,6);
$newarr=compact("num","str","arr");
print_r($newarr);
?>
运行结果:
Array([num]=>8[str]=>abc[arr]=>Array([0]=>2[1]=>4[2]=>6))
即数组$newarr包含5个元素:$newarr["num"],$newarr["str"],$newarr["arr"][0],$newarr["arr"][1],$newarr["arr"][2]。
与compact()函数对应的是extract()函数,作用是将一个数组分离成多个变量,语法格式如下:
extract(数组名)
例如:
$a=array("key1"=>1,"key2"=>2,"key3"=>3);
extract($a);//数组$a被分离成$key1、$key2、$key3
echo"$key1$key2$key3";
?>
注意:在extract(数组名)中,数组的键名必须是字母开头的字符串。
4.建立指定范围的数组
使用range()函数可以建立一个值在指定范围内的数组,语法格式如下:
数组名=range(初值,终值[,步长值])
注意:若初值<终值,则步长值为正数;若初值>终值,则步长值为负数。若省略步长值,则默认为1。例如: