《网站开发案例教程课件.ppt》由会员分享,可在线阅读,更多相关《网站开发案例教程课件.ppt(180页珍藏版)》请在三一办公上搜索。
1、,http:/,电子教学参考资料包,PHP网站开发案例教程,主编 赵增敏,3180,目录,第1章 配置PHP开发环境,第2章 PHP语言基础,第3章 数组与函数,第4章 字符串与正则表达式,第5章 构建PHP互动网页,第6章 PHP文件编程,第7章 PHP图像处理,第8章 MySQL数据库管理,第9章 PHP数据库编程,第10章 会员管理系统设计,4180,第1章 配置PHP开发环境,1.1 PHP开发组件介绍,1.2 配置PHP开发环境,5180,1.1 PHP开发组件介绍,1.1.1 Apache服务器 Apache是一款流行的Web服务器软件。据调查,目前在Internet上大约有50%
2、以上的Web服务器都在用Apache。Apache功能强大、性能稳定,而且是完全免费的,完全开放源代码,可以从Internet上自由下载。Apache服务器的主要特点支持多种Web编程语言。安全性高。扩展性好。UNIX线程。新的编译系统。对非UNIX平台更好的支持。,第1章目录,6180,1.1 PHP开发组件介绍,1.1.2 PHP语言 PHP是一种流行的开放源代码的Web编程语言,主要用于开发服务器端应用程序及动态网页。PHP语言的主要特点开放性源代码。运行于服务器端。跨平台性。语言简单易学。执行效率高。图像处理功能。数据库访问功能。面向对象编程。可伸缩性。,第1章目录,7180,1.1
3、PHP开发组件介绍,1.1.3 MySQL数据库 MySQL是目前最受欢迎的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用。MySQL是一款完全免费的数据库产品。MySQL数据库服务器的特点快速、可靠、易于使用。工作在客户端/服务器模式下或嵌入式系统中。真正的多线程。跨平台性。数据类型丰富。安全性好。处理大型数据库。连接性好。,第1章目录,8180,1.2 PHP开发环境配置,1.2.1 安装和测试ApacheApache的下载网址:http:/httpd.ap
4、ache.org/download.cgi文件:apache_2.2.4-win32-x86-no_ssl.msi。1.安装Apache服务器2.测试Apache服务器在IE浏览器的地址栏输入以下网址:http:/localhost/,第1章目录,9180,1.2 PHP开发环境配置,1.2.2 配置Apache服务器1.Listen指令Listen指令用于设置Apache服务器监听的IP地址和端口Listen IP-address:portnumber protocol2.DocumentRoot指令DocumentRoot指令用于设置网站文档的根目录DocumentRoot directo
5、ry-path3.Alias指令Alias指令用于映射指向文件系统某个物理目录的URL:Alias URL-path file-path|directory-path4.DirectoryIndex指令DirectoryIndex指令用于设置当客户端请求一个目录时寻找的资源列表,也就是为网站指定一组默认文档DirectoryIndex local-url local-url.,第1章目录,10180,1.2 PHP开发环境配置,第1章目录,1.2.3 管理Apache服务器,11180,1.2 PHP开发环境配置,第1章目录,1.2.4 安装和配置PHP1.下载和安装PHPPHP 5.2.3下
6、载网址:http:/,12180,1.2 PHP开发环境配置,第1章目录,1.2.4 安装和配置PHP2.配置PHP 通过编辑文件php.ini来实现。把PHP目录中的php.ini-dist文件复制到Apache目录中,把文件php.ini-dist重命名为php.ini。设置动态模块的加载路径:extension_dir=F:PHPext设置PHP的文档根目录:doc_root=F:phpdocs设置保存会话信息的目录:session.save_path=/tmp设置错误信息显示选项:display_errors=On设置服务器默认时区:date.timezone=PRC,13180,1.
7、2 PHP开发环境配置,第1章目录,1.2.4 安装和配置PHP3.通过修改httpd.conf文件让Apache支持PHPCGI二进制文件方式:ScriptAlias/php/F:/php/AddType application/x-httpd-php.phpAction application/x-httpd-php/php/php-cgi.exe“DLL动态链接库模块方式:把PHP安装目录中的php5ts.dll文件复制到Windows系统的system32文件夹中LoadModule php5_module F:/php/php5apache2_2.dllAddType applica
8、tion/x-httpd-php.php,14180,1.2 PHP开发环境配置,第1章目录,1.2.4 安装和配置PHP4.测试PHP文件内容:测试URL:http:/localhost/chap01/page1-01.php运行结果,15180,1.2 PHP开发环境配置,第1章目录,1.2.5 安装和配置MySQLMySQL 5.041的下载网址:http:/安装和配置MySQL结束安装并启动MySQL服务器配置向导选择MySQL配置类型选择数据库的用途设置数据库的存储位置设置MySQL服务器的最大并发连接数设置MySQL的网络选项设置MySQL默认字符集:选择【Manual Selec
9、ted Default Character Set/Cllation】,选择gb2312字符集(简体中文)。设置MySQL的Windows选项:将MySQL作为Windows服务来安装设置MySQL服务器的安全性选项,为MySQL的默认账号root设置密码,16180,1.2 PHP开发环境配置,第1章目录,1.2.5 安装和配置MySQL2.测试MySQL服务器,17180,1.2 PHP开发环境配置,第1章目录,1.2.5 安装和配置MySQL3.通过PHP连接MySQL服务器将PHP目录下的libmysql.dll文件复制到F:Apache2.2bin目录中。打开php.ini文件,对以
10、下属性进行设置。设置MySQL服务器的主机名:mysql.default_host=localhost设置MySQL服务器的端口号:mysql.default_port=3306设置默认用户:mysql.default_user=root设置默认密码:mysql.default_password=password启用PHP对MySQL的支持模块:extension=php_mysql.dll,18180,1.2 PHP开发环境配置,第1章目录,1.2.5 安装和配置MySQL3.通过PHP连接MySQL服务器通过PHP连接MySQL服务器,19180,1.2 PHP开发环境配置,第1章目录,1
11、.2.6 创建PHP MySQL动态站点(在Dreamweaver CS3中),20180,第2章 PHP语言基础,2.1 PHP基本知识,2.2 数据类型,2.3 变量与常量,2.4 运算符与表达式,2.5 流程控制语句,21180,2.1 PHP基本知识,第2章目录,2.1.1 PHP动态网页概述PHP动态网页就是混合使用PHP和HTML编写的Web页面。当访问者通过客户端浏览器必出PHP页请求时时,服务端会首先对页面中的PHP代码进行处理,然后把处理后的结果连同HTML内容一起传送到客户端浏览器。1.PHP动态网页的内容HTML标记;CSS样式定义;客户端脚本;PHP定界符;PHP代码。
12、2.PHP动态网页的访问方式PHP动态网页过输入“http:/”开头的虚拟路径来访问。通过虚拟路径访问PHP动态网页时,首先通过Apache服务器将PHP代码转发给PHP语言引擎进行处理,然后将执行结果连同HTML代码一起发送到客户端浏览器。如果正在用Dreamweaver创建PHP动态网页,按下F12键即可通过虚拟路径方式在浏览器中打开当前正在编辑的PHP动态网页,而不必用手动方式在浏览器中输入虚拟路径。,22180,2.1 PHP基本知识,第2章目录,2.1.2 创建PHP代码块PHP定界符2.1.3 编写PHP注释C+风格的单行注释“/”UNIX Shell风格的单行注释“#”C风格的多
13、行注释“/*/”,23180,2.1 PHP基本知识,第2章目录,2.1.4 PHP与HTML混合编码PHP语句在语法上是完全独立的单元,但也可以使一个语句跨越两个PHP代码块,并在这两个代码块之间包含HTML代码或其他非PHP代码,此时PHP将直接输出上一个结束标记与下一个开始标记之间的任何非PHP代码。当需要输出大量HTML内容时,退出PHP解析模式比使用echo()、print()或此类函数输出这些内容更为有效。2.1.5 PHP与JavaScript协同工作在PHP动态网页中,既可以包含PHP服务器端脚本,也可以包含JavaScript客户端脚本,而且这两种脚本可以协同工作。当访问者通
14、过客户端浏览器发出对某个PHP动态网页的请求后,由PHP在运行中按照HTML的语法格式动态生成页面,并由服务器将整个页面的数据发送给客户端浏览器,该页面中可能包含通过标记引入的JavaScript客户端脚本。在浏览器所执行的客户端JavaScript脚本其实是由PHP服务器端脚本动态生成的。使用PHP生成或操作客户端脚本,可以增强其有效性。,24180,2.2 数据类型,第2章目录,PHP语言支持的8种原始数据类型4种标量类型布尔型(boolean)整型数(integer)浮点数(float)字符串(string)两种复合类型数组(array)对象(object)两种特殊类型资源(resour
15、ce)空值(NULL),25180,2.2 数据类型,第2章目录,2.2.1 整型数整型数是集合Z=.,2,1,0,1,2,.中的一个数。整型数包括正整数、负整数和零。一个整型数可以用十进制,十六进制或八进制符号表示,前面可以加上可选的符号(或+)。若用八进制符号,则必须在数字前加上0;若用十六进制符号,则必须在数字前加上0 x。整型数的字长和平台有关。在32位操作系统中,整型数的取值范围是2 147 483 648+2 147 483 647。若给定的一个数超出了整型数的范围,则将被解释为浮点数;当运算结果超出了整型数范围时,也会返回浮点数。PHP不支持无符号整数。,26180,2.2 数据
16、类型,第2章目录,2.2.2 浮点数浮点数也称为双精度数或实数,其取值范围和精度远远大于整型数。在32位操作系统中,浮点数的取值范围为1.7E3081.7E+308(即1.7103081.710308)。浮点数可以用小数形式或科学计数法表示,在科学计数法中用E或e表示以10为底的幂。以下给出浮点数的例子。,27180,2.2 数据类型,第2章目录,2.2.3 字符串1.用单引号定义字符串表示一个字符串的最简单方法是用单引号()括起这个字符串。若要表示一个单引号,需要用反斜线()转义,即表示为“”。2.用双引号定义字符串若用双引号()括起字符串,则会使PHP处理更多特殊字符的转义序列。在用双引号
17、定义的字符串中,变量名会被变量值替代;用花括号把变量名括起来,便于变量解析。转义字符:n:换行;r:回车;t:水平制表符;:反斜线:$:美元符号:双引号3.用定界符定义字符串标识符 字符串内容标识符与双引号字符串一样,使用定界符定义字符串时,在字符串中包含的变量名运行时将被变量值替代。此外,在这种字符串中,可以直接包含单引号和双引号,而不必进行转义。,28180,2.2 数据类型,第2章目录,2.2.4 布尔型布尔型用于表示真值,其取值可以是true或false。布尔值通常用于控制程序的执行流程。若要定义指定一个布尔值,可以使用关键字true或false,这两个关键字是不区分大小写的,因此也可
18、以使用True或False。例如:2.2.5 特殊类型1.资源资源是一种特殊变量,保存了对外部资源的一个引用。资源是通过专门的函数来建立和使用的。由于资源类型变量保存为打开文件、数据库连接、图形画布区域等的特殊句柄,因此无法将其他类型的值转换为资源。2.NULL特殊的NULL值表示一个变量没有值。NULL类型只有一个值,就是大小写敏感的关键字NULL。例如:,29180,2.2 数据类型,第2章目录,2.2.6 数据类型转换1.强制类型转换(type)value2.整型转换3.字符串转换4.布尔转换5.测试数据类型使用gettype()函数来测试一个值的数据类型:string gettype(
19、mixed var),30180,2.3 变量与常量,第2章目录,2.3.1 定义变量在PHP语言中规定,变量用一个美元符号($)后面跟变量名来表示,而且变量名是区分大小写的。变量名与其他标识符一样都遵循相同的命名规则:一个有效的变量名由字母或下划线开头,后面可以跟上任意数量的字母、数字或下划线。命名变量通常与对变量赋值一起进行。检查变量或对象是否属于某种数据类型。is_int()检查变量是否为整型;is_float()检查变量是否为浮点型;is_numeric()检查变量是否为数值型;is_string()检查变量是否为字符串;is_bool()检查变量是否为布尔型;is_array()检查
20、是否为数组;is_object()检查变量是否为对象。使用gettype()函数测试一个变量的数据类型。使用var_dump()函数显示变量的相关信息:void var_dump(mixed expression,mixed expression,.)使用print_r()函数显示关于变量的易于理解的信息:bool print_r(mixed expression,bool return),31180,2.3 变量与常量,第2章目录,2.2.2 检查变量是否设置empty()函数检查一个变量是否为空:bool empty(mixed var)若参数var是非空或非零的值,则empty()返回f
21、alse。空字符串(“”)、0、“0”、NULL、false、array()、var$var;以及没有任何属性的对象都将被认为是空的,若参数var为空,则empty()返回true。isset()函数检测变量是否设置:bool isset(mixed var,mixed var,.)若参数var存在则返回true,否则返回false。isset()函数只能用于变量,因为传递任何其他参数都将造成解析错误。若使用isset()测试一个被设置成NULL的变量,将返回false。同时要注意,一个NULL字节(0)并不等同于PHP的NULL常数。,32180,2.3 变量与常量,第2章目录,2.3.3
22、可变变量与变量的引用1.可变变量若一个变量获取一个普通变量的值作为变量名,则该变量就称为可变变量。在某些情况下,使用可变变量是很方便的,由此可以动态地设置和使用一个变量的变量名。例如:$a=hello;$a=world;echo$a$hello;2.变量的引用在PHP中,通过的引用可以用两个变量来指向同一个内容。若要引用一个变量,可在该变量名前面加一个,33180,2.3 变量与常量,第2章目录,2.3.4 使用常量1.自定义常量在PHP语言中,可以用define()函数来定义常量。语法如下:bool define(string name,mixed value,bool case_insen
23、sitive)其中name指定常量的名称,常量名与其他任何PHP标识符遵循同样的命名规则,合法的常量名以字母或下划线开始,后面跟着任何字母、数字或下划线;value指定常量的值;参数bool case_insensitive指定常量名称是否区分大小写,默认值为true,即区分大小写。2.预定义常量_LINE_返回文件中的当前行号。_FILE_返回文件的完整路径和文件名。_FUNCTION_返回函数名称。_CLASS_返回类的名称。_METHOD_返回该方法被定义时的名字(区分大小写)。PHP_VERSION返回PHP的版本号。PHP_OS返回执行PHP解析器的操作系统名称。,34180,2.4
24、 运算符与表达式,第2章目录,2.4.1 算术运算符算术运算符包括加号()、减号()、乘号(*)、除号(/)和取模运算符(%),分别用于执行加、减、乘、除和求余数运算。其中“”除了作为减号外,也可以作为一元运算符(负号)使用,即对一个数取相反数;除号(“/”)总是返回浮点数。当被除数$a为负值时,取模$a%$b的结果也是负值。2.4.2 赋值运算符赋值运算符“=”的作用是把右边表达式的值赋给左边的运算数。赋值运算表达式的值就是所赋的值。也就是说,“$a=3”的值是3。这样,一个赋值运算表达式也可用在其他表达式中,例如:$a=($b=3)+6;常用复合赋值运算符+=$op1+=$op2$op1=
25、$op1+$op2=$op1=$op2$op1=$op1$op2*=$op1*=$op2$op1=$op1*$op2/=$op1/=$op2$op1=$op1/$op2%=$op1%=$op2$op1=$op1%$op2.=$op1.=$op2$op1=$op1.$op2,35180,2.4 运算符与表达式,第2章目录,2.4.3 递增/递减运算符+(递增)+$op(前加)首先在$op的值上加1,然后返回$op$op+(后加)首先返回$op,然后在$op的值上加1(递减)$op(前减)首先在$op的值上减1,然后返回$op$op(后减)首先返回$op,然后将$op的值减1递增/递减运算符对布尔
26、值没有影响。递减NULL值也没有效果,递增NULL的结果是1。,36180,2.4 运算符与表达式,第2章目录,2.4.4 字符串运算符连接运算符(“.”),它返回两个操作数连接后的字符串;连接赋值运算符(“.=”),它将右边操作数附加到左边的操作数之后。2.4.5 位运算符位运算符允许对整型数中指定的位进行置位,即对二进制位从低位到高位对齐后进行运算。执行位运算时会将操作数转换为二进制整数,然后按位进行相应的运算,运算的结果以十进制整数表示。如果两个运算数都是字符串,则位运算符将对字符的ASCII值进行操作。&(按位与)$op1&$op2把$op1和$op2中都为1的位设置为1|(按位或)$
27、op1|$op2把$op1或$op2中为1的位设置为1(按位异或)$op1$op2把$op1和$op2中不同的位设置为 1(按位取反)$op(单目运算符)将$op中为0的位设置为1,反之亦然$op2将$op1中的位向右移动$op2次(每一次移动都表示“除以2”),37180,2.4 运算符与表达式,第2章目录,2.4.6 比较运算符比较运算符用于比较两个值的大小,通过比较运算符连接操作数将构成比较表达式,比较表达式的值为布尔值true或false。=(等于)$op1=$op2若$op1等于$op2,则为true;否则为false=(全等)$op1=$op2若$op1等于$op2且两者类型相同,
28、则为true;否则为false!=(不等于)$op1!=$op2若$op1不等于$op2,则为true;否则为false(不等于)$op1$op2若$op1不等于$op2,则为true;否则为false!=(非全等)$op1!=$op2若$op1不等于$op2或两者类型不同,则为true;否则为false(大于)$op1$op2若$op1大于$op2,则为true;否则为false=(大于或等于)$op1=$op2若$op1大于或等于$op2,则为true;否则为false,38180,2.4 运算符与表达式,第2章目录,2.4.7 条件运算符(expr1)?(expr2):(expr3)条件
29、表达式(expr1)?(expr2):(expr3)的值按照以下规则计算:当表达式expr1的值为true时,条件表达式的值为expr2;在expr1求值为false时,条件表达式的值为expr3。条件运算符可以用于快速构造条件语句,可以视为ifelse语句的简写形式。例如,可以利用条件运算符来计算一个数的绝对值,即:$y=x 0?x:-x;,39180,2.4 运算符与表达式,第2章目录,2.4.8 逻辑运算符逻辑运算符用于连接布尔表达式并构成逻辑表达式,逻辑天的值为布尔值true或false。在PHP语言中,逻辑运算符包括逻辑与、逻辑或、逻辑异或和逻辑非。and(逻辑与)$a and$b
30、若$a和$b均为true,则为trueor(逻辑或)$a or$b若$a或$b任一为true,则为truexor(逻辑异或)$a xor$b 若$a或$b任一为true但不同时为true,则为true!(逻辑非)!$a 若$a为true,则为false&(逻辑与)$a&$b 若$a和$b均为true,则为true|(逻辑或)$a|$b若$a或$b任一为true,则为true 逻辑与和逻辑或都有两种不同形式的运算符,原因是它们运算的优先级不同。,40180,2.4 运算符与表达式,第2章目录,2.4.9 表达式表达式是PHP语言的重要基础之一。通过在表达式后面添加一个分号(;)将构成一个语句。最
31、基本的表达式形式是常量和变量,稍微复杂的表达式是函数。在PHP中,表达式可以说是无处不在的。除了常见的算术表达式外,还有各种各样的表达式。一个常用的表达式类型是比较表达式,这些表达式的值为false或true。PHP支持各种比较运算符,通过这些运算符构成的比较表达式经常用在条件判断语句中。通过逻辑运算符连接比较表达式可以构成逻辑表达式,用来表示更为复杂的条件。,41180,2.4 运算符与表达式,第2章目录,2.4.10 运算符优先级,42180,2.5 流程控制语句,第2章目录,2.5.1 选择语句1.if语句if(expr)statementsif(expr)statementselse
32、elsestatementsif(expr1)statementselseif(expr2)elseifstatementselse elsestatements,43180,2.5 流程控制语句,第2章目录,2.5.1 选择语句2.switch语句switch(expr)case expr1:statements1;break;case expr2:statements2;break;.default:defaultstatements;break;,44180,2.5 流程控制语句,第2章目录,2.5.2 循环语句1.while语句while语句根据指定的条件将一组语句执行零遍或若干遍:w
33、hile(expr)statements2.do-while语句do-while语句根据指定的条件将一组语句执行一遍或若干遍:do statements while(expr);3.for语句for语句的语法如下:for(expr1;expr2;expr3)statements,45180,2.5 流程控制语句,第2章目录,2.5.3 跳转语句1.break语句break语句结束当前for、foreach、while、do-while或switch语句的执行,在该语句可以添加一个可选的数字参数,以决定跳出几重循环。2.continue语句continue语句用在各种循环结构中,用来跳过本次循环
34、中剩余的代码并在条件求值为真时开始执行下一次循环。在PHP中,continue也可以用在switch语句中。在continue语句中,可以使用一个可选的数字参数,以决定跳过几重循环到循环结尾。,46180,2.5 流程控制语句,第2章目录,2.5.4 包含文件语句1.include语句include filepath;include(filepath);2.include_once语句include_once语句功能与include语句类似,惟一的区别在于:如果该文件中的代码已经被包含了,则不会再次包含。如同此语句名称暗示的那样,只会包含一次。require_once()的返回值与includ
35、e()相同。如果文件已被包含,则返回true。3.require语句require filenamerequire(filename)require语句与include语句功能类似,惟一区别在于:如果找不到文件,则include语句产生一个警告,而require语句则导致一个致命错误。如果想在丢失文件时停止处理页面,则应该使用require语句。4.require_once语句require_once语句用于在脚本执行期间包含并运行指定文件,其功能与require语句类似,所不同的是,如果该文件中的代码已经被包含了,则不会再次包含。,47180,第3章 数组与函数,3.1 数组,3.2 函数,
36、3.3 面向对象编程初步,48180,3.1 数组,第3章目录,数组的概念:数组是一种复合数据类型,可用于保存一组类型相同或不相同的数据,并把一组值映射为键。键也称为数组的索引,它可以是整型数或字符串,相应的数组分别称为枚举数组或关联数组。键可以有一个或多个,相应的数组分别称为一组数组或多维数组。3.1.1 创建数组1.用array()创建数组$array_name=array(key=value,.);其中参数key表示键名,可以是整型数或字符串;value表示与键对应的值,可以是任何类型的值(包括数组)。array()语言结构返回根据参数建立的数组。2.用方括号语法新建或修改数组$arr_
37、namekey=value;也可以省略键名:$arr_name=value;其中key可以是整型数或字符串;value可以是任何值。,49180,3.1 数组,第3章目录,3.1.2 遍历数组语法1foreach(array_expr as$value)statements语法2foreach(array_expr as$key=$value)statements第一种语法格式遍历给定的array_expr数组。在每次循环中,当前元素的值被赋给$value,并且数组内部的指针向前移一步,因此在下一次循环中将会得到下一元素。第二种语法格式与第一种语法格式作用相同,但当前元素的键名会在每次循环中赋
38、给变量$key。,50180,3.1 数组,第3章目录,3.1.3 预定义数组,51180,3.1 数组,第3章目录,3.1.3 预定义数组常用的$_SERVER数组元素,52180,3.1 数组,第3章目录,3.1.4 数组函数bool array_key_exists(mixed key,array search):检查给定的键名或索引是否存在于数组中。key表示键名或索引,search表示待搜索的数组。若给定的key存在于数组中,则返回true。mixed array_pop(array&arr):弹出并返回arr数组的最后一个元素(出栈),将数组arr的长度减1。若arr为空或不是数组
39、,则返回NULL。int array_push(array&arr,mixed var,mixed.):将一个或多个传入的单元压入数组arr的末尾(入栈)。var表示传入的单元。数组arr的长度将根据入栈单元的数目增加。array array_reverse(array arr,bool preserve_keys):返回一个元素顺序相反的新数组。若preserve_keys为true,则保留原来的键名。mixed array_shift(array&arr):把数组arr的第一个元素移出并作为结果返回,将arr的长度减1并将所有其他元素向前移动一位。所有的数字键名将改为从零开始计数,字符串键
40、名将不变。若arr为空或不是数组,则返回NULL。使用本函数后会重置数组指针。number array_sum(array arr):计算数组arr中所有值的和并以整数或浮点数返回。array array_unique(array arr):接受数组arr作为输入并返回没有重复值的新数组。int array_unshift(array&arr,mixed var,mixed.):将传入的单元插入到数组arr的开头。单元是作为整体被插入的,因此传入的单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的字符串键名保持不变。本函数返回数组arr新的元素数目。array array_v
41、alues(array input):返回数组input中所有的值并给其建立数字索引。bool asort(array&arr,int sort_flags):对数组arr进行排序,数组的索引保持和元素的关联。若成功则返回true,失败则返回false。int count(mixed var,int mode):返回var(通常数组)中的元素数目,对任何其他类型都只有一个单元。若把可选参数mode设为1,则将递归地对数组计数,这对计算多维数组的所有元素尤其有用。mode的默认值是0。,53180,3.1 数组,第3章目录,3.1.4 数组函数array each(array&arr):返回数组
42、arr中当前的键-值对并将数组指针向前移动一步。键值对被返回为4个单元的数组,键名为0、1、key和value,其中元素0和key包含有数组单元的键名,1和value则包含有数据。若内部指针越过了数组末端,则返回false。mixed end(array&arr):将数组arr的内部指针移动到最后一个元素并返回其值。bool ksort(array&arr,int sort_flags):对数组名arr排序,并保留键名到数据的关联。本函数主要用于关联数组。若成功则返回true,失败则返回false。void list(mixed varname,mixed.):通过一步操作给一组变量进行赋值。
43、list()仅能用于数字索引的数组并假定数字索引从0开始。像array()一样,list()不是真正的函数,而是语言结构。mixed next(array&arr):返回数组arr的内部指针指向的下一个元素的值,或当没有更多元素时返回false。mixed prev(array&arr):返回数组arr的内部指针指向的前一个元素的值,或当没有更多元素时返回false。array range(mixed low,mixed high,number step):返回数组中从low到high的元素(包括它们本身)所构成的数组。若low high,则序列将从high到low。若给出了可选参数step的
44、值,则把它作为元素之间的步进值。step应为正值。若未指定step,则默认为1。mixed reset(array&arr):把数组arr的内部指针倒回到第一个元素并返回该元素的值,若数组为空,则返回false。bool rsort(array&arr,int sort_flags):对数组arr进行逆向排序(最高到最低),并为该数组中的元素赋予新的键名。若成功则返回true,失败则返回false。bool shuffle(array&arr):打乱数组arr,进行随机排序,并为数组arr中的元素赋予新的键名。若成功则返回true,失败则返回false。bool sort(array&arr,
45、int sort_flags):对数组arr进行排序(最低到最高),并为该数组中的元素赋予新的键名。若成功则返回true,失败则返回false。,54180,3.2 函数,第3章目录,函数概念函数是拥有名称的一组语句,调用函数时可以向它传递一些参数,当函数执行完毕后可以向调用代码返回一个值。在应用开发中可将多次执行的程序代码定义成一个函数,以便反复调用,提高工作效率。3.2.1 自定义函数function function_name($arg1,$arg2,$argN)statements return expr;其中function_name是要创建函数的名称。命名函数时,应遵循与变量命名相
46、同的规则,但函数名不能以美元符号($)开头。函数名不区分大小写。$arg1$argN是函数的参数,通过这些参数可以向函数传递信息。一个函数可以有多个参数,它们之间用逗号分隔。函数的参数是可选的。参数可以是各种数据类型,例如整型、浮点型、字符串以及数组等。statements表示在函数中执行的一组语句。return语句用于立即结束此函数的执行并将它的参数作为函数的值返回,也用于终止脚本文件的执行。return()是语言结构而不是函数,仅在参数包含表达式时才需要用括号将其括起来。,55180,3.2 函数,第3章目录,3.2.2 函数的参数1.通过引用传递参数在默认情况下,函数参数通过值传递,这意
47、味着即使在函数内部改变参数的值,并不会改变函数外部的值。如果希望允许函数修改它的参数值,则必须通过引用传递参数。若要函数的一个参数通过引用传递,则可以在函数定义中该参数的前面预先加上引用符号“&”。2.设置参数的默认值定义函数时,还可以为函数的参数设置默认值。默认值既可以是标量类型,也可以是数组和特殊类型,例如数组和NULL。但默认值必须是常量表达式,而不能是变量、类成员或函数调用。当使用默认参数时,任何默认参数必须放在任何非默认参数的右侧;否则,也许函数将不会按照预期的情况工作。自PHP 5起,默认值可以通过引用传递。3.使用可变长度参数列表在用户自定义函数中可以使用可变长度参数列表。定义可
48、变长度参数列表时,可以使用以下函数获取参数的信息。func_num_args()函数返回传递给函数的参数数目。func_get_arg()函数从参数列表中获取一个参数。func_get_args()函数返回一个由函数参数列表组成的数组。,56180,3.2 函数,第3章目录,3.2.3 函数的返回值函数的返回值通过使用可选的return语句返回。返回值可以是任何类型,其中包括列表和对象。执行return语句时,函数立即结束运行并将控制权传递回它被调用的行。如果在一个函数中调用return语句,将立即结束此函数的执行并将它的参数作为函数的值返回。3.2.4 变量函数在PHP语言中,如果一个变量名
49、后有圆括号,则将寻找与变量的值同名的函数,并且将尝试执行它。这就是变量函数的概念。变量函数不能用于语言结构,如echo()、print()、unset()、isset()、empty()、include()、require()以及类似的语句。,57180,3.2 函数,第3章目录,3.2.5 变量作用域变量的作用域与包含文件。大多数PHP变量不仅在当前PHP文件中生效,其作用域也将包含include和require引入的文件。局部变量。在用户自定义函数中,一个局部函数范围将被引入。在默认情况下,任何用于函数内部的变量将被限制在局部函数范围内,这种变量称为局部变量。全局变量。在任何函数外部定义的
50、变量是全局变量。若要在函数内部使用全局变量,可以先用global关键字来声明全局变量,然后对全局变量进行访问。在函数内部,也可以直接通过预定义数组$GLOBALS来访问全局变量。在$GLOBALS数组中,每一个变量为一个元素,键名对应变量名,值对应变量的内容。$GLOBALS之所以在全局范围内存在,是因为$GLOBALS是一个超全局变量。静态变量。静态变量使用关键字来static来声明,它仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。,58180,3.2 函数,第3章目录,3.2.6 内部函数1.检查函数是否存在bool function_exists(string func