资源描述
,单击此处编辑母版标题样式,*,*,单击此处编辑母版标题样式,*,单击此处编辑母版标题样式,*,*,PHP,网站开发案例教程,2,180,目录,第1章 配置,PHP,开发环境,第2章 PHP语言根底,第3章 数组与函数,第4章 字符串与正那么表达式,第5章 构建,PHP,互动网页,第6章,PHP,文件编程,第7章,PHP,图像处理,第8章,MySQL,数据库管理,第9章,PHP,数据库编程,第10章 会员管理系统设计,3,180,第1章 配置,PHP,开发环境,1.1,PHP,开发组件介绍,1.2,配置,PHP,开发环境,4,180,1.1,PHP,开发组件介绍,1.1.1 Apache效劳器,Apache是一款流行的Web效劳器软件。据调查,目前在Internet,上大约有50%以上的Web效劳器都在用Apache。Apache功能强大、,性能稳定,而且是完全免费的,完全开放源代码,可以从Internet,上自由下载。,Apache效劳器的主要特点,支持多种Web编程语言。,平安性高。,扩展性好。,UNIX线程。,新的编译系统。,对非UNIX平台更好的支持。,第1章目录,5,180,1.1,PHP,开发组件介绍,1.1.2 PHP语言,PHP是一种流行的开放源代码的Web编程语言,主要用于开发,效劳器端应用程序及动态网页。,PHP语言的主要特点,开放性源代码。,运行于效劳器端。,跨平台性。,语言简单易学。,执行效率高。,图像处理功能。,数据库访问功能。,面向对象编程。,可伸缩性。,第1章目录,6,180,1.1,PHP,开发组件介绍,1.1.3 MySQL数据库,MySQL是目前最受欢送的开源SQL数据库管理系统,它由,MySQL AB开发、发布和支持。MySQL是一个快速的、多线程、,多用户和健壮的SQL数据库效劳器。MySQL效劳器支持关键任务、,重负载生产系统的使用。MySQL是一款完全免费的数据库产品。,MySQL数据库效劳器的特点,快速、可靠、易于使用。,工作在客户端/效劳器模式下或嵌入式系统中。,真正的多线程。,跨平台性。,数据类型丰富。,平安性好。,处理大型数据库。,连接性好。,第1章目录,7,180,1.2,PHP,开发环境配置,1.2.1 安装和测试Apache,Apache的下载,文件:,apache_2.2.4-win32-x86-no_ssl.msi。,1. 安装Apache效劳器,2. 测试Apache效劳器,在IE浏览器的地址栏输入以下,:/localhost/,第1章目录,8,180,1.2,PHP,开发环境配置,1.2.2 配置Apache效劳器,1. Listen指令,Listen指令用于设置Apache效劳器监听的IP地址和端口,Listen IP-address:portnumber protocol,2. DocumentRoot指令,DocumentRoot指令用于设置网站文档的根目录,DocumentRoot directory-path,3. Alias指令,Alias指令用于映射指向文件系统某个物理目录的URL:,Alias URL-path file-path|directory-path,4. DirectoryIndex指令,DirectoryIndex指令用于设置当客户端请求一个目录时寻找的资源列表,也就是为网站指定一组默认文档,DirectoryIndex local-url local-url .,第1章目录,9,180,1.2,PHP,开发环境配置,第1章目录,1.2.3 管理Apache效劳器,10,180,1.2,PHP,开发环境配置,第1章目录,1.2.4 安装和配置PHP,1. 下载和安装PHP,下载,文件:,php-5.2.3-Win32.zip。,PHP的安装:,把zip压缩包解压缩到指定的文件夹中,11,180,1.2,PHP,开发环境配置,第1章目录,1.2.4 安装和配置PHP,2. 配置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,12,180,1.2,PHP,开发环境配置,第1章目录,1.2.4 安装和配置PHP,3. 通过修改 d.conf文件让Apache支持PHP,CGI二进制文件方式:,ScriptAlias /php/ F:/php/,AddType application/x- d-php .php,Action application/x- d-php /php/php-cgi.exe“,DLL动态链接库模块方式:,把PHP安装目录中的php5ts.dll文件复制到Windows系统的system32文件夹中,LoadModule php5_module F:/php/php5apache2_2.dll,AddType application/x- d-php .php,13,180,1.2,PHP,开发环境配置,第1章目录,1.2.4 安装和配置PHP,4. 测试PHP,文件内容:,测试URL:,:/localhost/chap01/page1-01.php,运行结果,14,180,1.2,PHP,开发环境配置,第1章目录,1.2.5 安装和配置MySQL,MySQL 5.041的下载,文件名:mysql-essential-5.0.41-win32.msi。,1. 安装和配置MySQL,结束安装并启动MySQL效劳器配置向导,选择MySQL配置类型,选择数据库的用途,设置数据库的存储位置,设置MySQL效劳器的最大并发连接数,设置MySQL的网络选项,设置MySQL默认字符集:选择【Manual Selected Default Character Set/Cllation】,选择gb2312字符集简体中文。,设置MySQL的Windows选项:将MySQL作为Windows效劳来安装,设置MySQL效劳器的平安性选项,为MySQL的默认账号root设置密码,15,180,1.2,PHP,开发环境配置,第1章目录,1.2.5 安装和配置MySQL,2. 测试MySQL效劳器,16,180,1.2,PHP,开发环境配置,第1章目录,1.2.5 安装和配置MySQL,3. 通过PHP连接MySQL效劳器,将PHP目录下的libmysql.dll文件复制到F:Apache2.2bin目录中。,翻开php.ini文件,对以下属性进行设置。,设置MySQL效劳器的主机名:,mysql.default_host = localhost,设置MySQL效劳器的端口号:,mysql.default_port = 3306,设置默认用户:,mysql.default_user = root,设置默认密码:,mysql.default_password = password,启用PHP对MySQL的支持模块:,extension = php_mysql.dll,17,180,1.2,PHP,开发环境配置,第1章目录,1.2.5 安装和配置MySQL,3. 通过PHP连接MySQL效劳器,通过PHP连接MySQL效劳器,18,180,1.2,PHP,开发环境配置,第1章目录,1.2.6 创立PHP MySQL动态站点在Dreamweaver CS3中,19,180,第2章 PHP语言根底,2.1 PHP根本知识,2.2 数据类型,2.3 变量与常量,2.4,运算符与表达式,2.5,流程控制语句,20,180,2.1 PHP根本知识,第2章目录,2.1.1 PHP动态网页概述,PHP动态网页就是混合使用PHP和HTML编写的Web页面。当访问者通,过客户端浏览器必出PHP页请求时时,效劳端会首先对页面中的PHP代码,进行处理,然后把处理后的结果连同HTML内容一起传送到客户端浏览器。,1. PHP动态网页的内容,HTML标记;CSS样式定义;客户端脚本;PHP定界符;PHP代码。,2. PHP动态网页的访问方式,PHP动态网页过输入“ :/开头的虚拟路径来访问。,通过虚拟路径访问PHP动态网页时,首先通过Apache效劳器将PHP代码,转发给PHP语言引擎进行处理,然后将执行结果连同HTML代码一起发送,到客户端浏览器。,如果正在用Dreamweaver创立PHP动态网页,按下F12键即可通过虚拟路径方式在浏览器中翻开当前正在编辑的PHP动态网页,而不必用手动方式在浏览器中输入虚拟路径。,21,180,2.1 PHP根本知识,第2章目录,2.1.2 创立PHP代码块,PHP定界符,2.1.3 编写PHP注释,C+风格的单行注释“/,UNIX Shell风格的单行注释“#,C风格的多行注释“/*/,22,180,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客户端脚本,而且这两种脚本可以协同工作。,当访问者通过客户端浏览器发出对某个PHP动态网页的请求后,由PHP,在运行中按照HTML的语法格式动态生成页面,并由效劳器将整个页面的,数据发送给客户端浏览器,该页面中可能包含通过标记,引入的JavaScript客户端脚本。在浏览器所执行的客户端JavaScript脚本其,实是由PHP效劳器端脚本动态生成的。,使用PHP生成或操作客户端脚本,可以增强其有效性。,23,180,2.2 数据类型,第2章目录,PHP语言支持的8种原始数据类型,4种标量类型,布尔型boolean,整型数integer,浮点数float,字符串string,两种复合类型,数组array,对象object,两种特殊类型,资源resource,空值NULL,24,180,2.2 数据类型,第2章目录,2.2.1 整型数,整型数是集合Z = ., 2, 1, 0, 1, 2, . 中的一个数。整型数包括正整,数、负整数和零。一个整型数可以用十进制,十六进制或八进制符号表示,,前面可以加上可选的符号或+。假设用八进制符号,那么必须在数字前加,上0;假设用十六进制符号,那么必须在数字前加上0x。,整型数的字长和平台有关。在32位操作系统中,整型数的取值范围是,2 147 483 648+2 147 483 647。假设给定的一个数超出了整型数的范围,,那么将被解释为浮点数;当运算结果超出了整型数范围时,也会返回浮点数。,PHP不支持无符号整数。,25,180,2.2 数据类型,第2章目录,2.2.2 浮点数,浮点数也称为双精度数或实数,其取值范围和精度远远大于整型数。,在32位操作系统中,浮点数的取值范围为1.7E3081.7E+308即,1.7103081.710308。浮点数可以用小数形式或科学计数法表示,,在科学计数法中用E或e表示以10为底的幂。,以下给出浮点数的例子。,26,180,2.2 数据类型,第2章目录,2.2.3 字符串,1. 用单引号定义字符串,表示一个字符串的最简单方法是用单引号括起这个字符串。假设要表示一个,单引号,需要用反斜线转义,即表示为“。,2. 用双引号定义字符串,假设用双引号括起字符串,那么会使PHP处理更多特殊字符的转义序列。,在用双引号定义的字符串中,变量名会被变量值替代;用花括号把变量名括起来,,便于变量解析。,转义字符:n:换行;r:回车;t:水平制表符;:反斜线:$:美元符号:双引号,3. 用定界符定义字符串,标识符,字符串内容,标识符,与双引号字符串一样,使用定界符定义字符串时,在字符串中包含的变量名运,行时将被变量值替代。此外,在这种字符串中,可以直接包含单引号和双引号,而,不必进行转义。,27,180,2.2 数据类型,第2章目录,2.2.4 布尔型,布尔型用于表示真值,其取值可以是true或false。布尔值通常用于控制程序的执,行流程。假设要定义指定一个布尔值,可以使用关键字true或false,这两个关键字是,不区分大小写的,因此也可以使用True或False。例如:,2.2.5 特殊类型,1. 资源,资源是一种特殊变量,保存了对外部资源的一个引用。资源是通过专门的函数,来建立和使用的。由于资源类型变量保存为翻开文件、数据库连接、图形画布区域,等的特殊句柄,因此无法将其他类型的值转换为资源。,2. NULL,特殊的NULL值表示一个变量没有值。NULL类型只有一个值,就是大小写敏感,的关键字NULL。,例如:,28,180,2.2 数据类型,第2章目录,2.2.6 数据类型转换,1. 强制类型转换,(,type ) value,2.,整型转换,3. 字符串转换,4. 布尔转换,5. 测试数据类型,使用,gettype(),函数来测试一个值的数据类型:,string gettype ( mixed var ),29,180,2.3 变量与常量,第2章目录,2.3.1 定义变量,在PHP语言中规定,变量用一个美元符号$后面跟变量名来表示,,而且变量名是区分大小写的。变量名与其他标识符一样都遵循相同的命名,规那么:一个有效的变量名由字母或下划线开头,后面可以跟上任意数量的,字母、数字或下划线。命名变量通常与对变量赋值一起进行。,检查变量或对象是否属于某种数据类型。,is_int()检查变量是否为整型;is_float()检查变量是否为浮点型;is_numeric()检查变量是否为数值型;is_string()检查变量是否为字符串;is_bool()检查变量是否为布尔型;is_array() 检查是否为数组;is_object()检查变量是否为对象。,使用gettype()函数测试一个变量的数据类型。,使用var_dump()函数显示变量的相关信息:,void var_dump ( mixed expression , mixed expression , . ),使用print_r()函数显示关于变量的易于理解的信息:,bool print_r ( mixed expression , bool return ),30,180,2.3 变量与常量,第2章目录,2.2.2 检查变量是否设置,empty()函数检查一个变量是否为空:,bool empty ( mixed var ),假设参数var是非空或非零的值,那么empty()返回false。空字符串,“、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常数。,31,180,2.3 变量与常量,第2章目录,2.3.3 可变变量与变量的引用,1. 可变变量,假设一个变量获取一个普通变量的值作为变量名,那么该变量就称,为可变变量。在某些情况下,使用可变变量是很方便的,由此可以,动态地设置和使用一个变量的变量名。例如:,$a = hello ;,$a = world ;,echo $a $hello ;,2. 变量的引用,在PHP中,通过的引用可以用两个变量来指向同一个内容。假设,要引用一个变量,可在该变量名前面加一个&符号。例如:,$a = ,32,180,2.3 变量与常量,第2章目录,2.3.4 使用常量,1. 自定义常量,在PHP语言中,可以用define()函数来定义常量。语法如下:,bool define ( string name, mixed value , bool case_insensitive ),其中name指定常量的名称,常量名与其他任何PHP标识符遵循同样的,命名规那么,合法的常量名以字母或下划线开始,后面跟着任何字母、数字,或下划线;value指定常量的值;参数bool case_insensitive指定常量名称是,否区分大小写,默认值为true,即区分大小写。,2. 预定义常量,_LINE_返回文件中的当前行号。,_FILE_返回文件的完整路径和文件名。,_FUNCTION_返回函数名称。,_CLASS_返回类的名称。,_METHOD_返回该方法被定义时的名字区分大小写。,PHP_VERSION返回PHP的版本号。,PHP_OS返回执行PHP解析器的操作系统名称。,33,180,2.4 运算符与表达式,第2章目录,2.4.1 算术运算符,算术运算符包括加号、减号、乘号*、除号/和取,模运算符%,分别用于执行加、减、乘、除和求余数运算。其中“除,了作为减号外,也可以作为一元运算符负号使用,即对一个数取相反,数;除号“/总是返回浮点数。当被除数$a为负值时,取模$a % $b的,结果也是负值。,2.4.2 赋值运算符,赋值运算符“=的作用是把右边表达式的值赋给左边的运算数。赋值运,算表达式的值就是所赋的值。也就是说,“$a = 3的值是3。这样,一个赋,值运算表达式也可用在其他表达式中,例如:$a = ($b = 3) + 6;,常用复合赋值运算符,+=$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,.=$op1 .= $op2 $op1 = $op1 . $op2,34,180,2.4 运算符与表达式,第2章目录,2.4.3 递增/递减运算符,+递增,+$op前加首先在$op的值上加1,然后返回$op,$op+后加首先返回$op,然后在$op的值上加1,递减,$op前减首先在$op的值上减1,然后返回$op,$op后减首先返回$op,然后将$op的值减1,递增/递减运算符对布尔值没有影响。递减NULL值也没有效果,,递增NULL的结果是1。,35,180,2.4 运算符与表达式,第2章目录,2.4.4 字符串运算符,连接运算符“.,它返回两个操作数连接后的字符串;,连接赋值运算符“.=,它将右边操作数附加到左边的操作数之后。,2.4.5 位运算符,位运算符允许对整型数中指定的位进行置位,即对二进制位从低位到,高位对齐后进行运算。执行位运算时会将操作数转换为二进制整数,然后,按位进行相应的运算,运算的结果以十进制整数表示。如果两个运算数都,是字符串,那么位运算符将对字符的ASCII值进行操作。,&按位与$op1 & $op2把$op1和$op2中都为1的位设置为1,|按位或$op1 | $op2把$op1或$op2中为1的位设置为1,按位异或$op1 $op2把$op1和$op2中不同的位设置为 1,按位取反$op单目运算符将$op中为0的位设置为1,反之亦然,向左移位$op1 $op2将$op1中的位向右移动$op2次每一次移动都表示“除以2,36,180,2.4 运算符与表达式,第2章目录,2.4.6 比较运算符,比较运算符用于比较两个值的大小,通过比较运算符连接操作数将构成比较表,达式,比较表达式的值为布尔值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,小于$op1 大于$op1 $op2假设$op1大于$op2,那么为true;否那么为false,=小于或等于$op1 =大于或等于$op1 = $op2假设$op1大于或等于$op2,那么为true;否那么为false,37,180,2.4 运算符与表达式,第2章目录,2.4.7 条件运算符,(expr1) ? (expr2) : (expr3),条件表达式 (expr1) ? (expr2) : (expr3) 的值按照以下规,那么计算:,当表达式expr1的值为true时,条件表达式的值为,expr2;在expr1求值为false时,条件表达式的值为expr3。,条件运算符可以用于快速构造条件语句,可以视为,ifelse语句的简写形式。例如,可以利用条件运算符来,计算一个数的绝对值,即:,$y = x 0 ? x : -x ;,38,180,2.4 运算符与表达式,第2章目录,2.4.8 逻辑运算符,逻辑运算符用于连接布尔表达式并构成逻辑表达式,逻辑天的,值为布尔值true或false。在PHP语言中,逻辑运算符包括逻辑与、,逻辑或、逻辑异或和逻辑非。,and逻辑与$a and $b 假设$a和$b均为true,那么为true,or逻辑或$a or $b假设$a或$b任一为true,那么为true,xor逻辑异或$a xor $b 假设$a或$b任一为true但不同时为true,那么为true,!逻辑非! $a 假设$a为true,那么为false,&逻辑与 $a & $b 假设$a和$b均为true,那么为true,|逻辑或$a | $b假设$a或$b任一为true,那么为true,逻辑与和逻辑或都有两种不同形式的运算符,原因是它们运算,的优先级不同。,39,180,2.4 运算符与表达式,第2章目录,2.4.9 表达式,表达式是PHP语言的重要根底之一。通过在表达式后,面添加一个分号;将构成一个语句。最根本的表达,式形式是常量和变量,稍微复杂的表达式是函数。在,PHP中,表达式可以说是无处不在的。除了常见的算术,表达式外,还有各种各样的表达式。,一个常用的表达式类型是比较表达式,这些表达式的,值为false或true。PHP支持各种比较运算符,通过这些,运算符构成的比较表达式经常用在条件判断语句中。通,过逻辑运算符连接比较表达式可以构成逻辑表达式,用,来表示更为复杂的条件。,40,180,2.4 运算符与表达式,第2章目录,2.4.10 运算符优先级,41,180,2.5 流程控制语句,第2章目录,2.5.1 选择语句,1.,if,语句,if ( expr ),statements,if ( expr ),statements,else,elsestatements,if ( expr1 ),statements,elseif ( expr2 ),elseifstatements,else,elsestatements,42,180,2.5 流程控制语句,第2章目录,2.5.1 选择语句,2.,switch,语句,switch ( expr ) ,case expr1:,statements1 ;,break ;,case expr2:,statements2 ;,break ;,. . .,default:,defaultstatements ;,break ;,43,180,2.5 流程控制语句,第2章目录,2.5.2 循环语句,1. while语句,while语句根据指定的条件将一组语句执行零遍或假设干遍:,while ( expr ),statements,2. do-while语句,do-while语句根据指定的条件将一组语句执行一遍或假设干遍:,do ,statements, while ( expr );,3. for语句,for语句的语法如下:,for ( expr1; expr2; expr3 ),statements,44,180,2.5 流程控制语句,第2章目录,2.5.3 跳转语句,1.,break,语句,break,语句结束当前,for、foreach、while、do-while,或,switch,语句的执行,在该语句可以添加一个可选的数字,参数,以决定跳出几重循环。,2.,continue,语句,continue,语句用在各种循环结构中,用来跳过本次循,环中剩余的代码并在条件求值为真时开始执行下一次循,环。在,PHP,中,,continue,也可以用在,switch,语句中。在,continue,语句中,可以使用一个可选的数字参数,以决,定跳过几重循环到循环结尾。,45,180,2.5 流程控制语句,第2章目录,2.5.4 包含文件语句,1. include语句,include filepath ;,include ( filepath ) ;,2. include_once语句,include_once语句功能与include语句类似,惟一的区别在于:如果该文件中的代,码已经被包含了,那么不会再次包含。如同此语句名称暗示的那样,只会包含一次。,require_once()的返回值与include()相同。如果文件已被包含,那么返回true。,3. require语句,require filename,require ( filename ),require语句与include语句功能类似,惟一区别在于:如果找不到文件,那么,include语句产生一个警告,而require语句那么导致一个致命错误。如果想在丧失文件,时停止处理页面,那么应该使用require语句。,4. require_once语句,require_once语句用于在脚本执行期间包含并运行指定文件,其功能与require语,句类似,所不同的是,如果该文件中的代码已经被包含了,那么不会再次包含。,46,180,第3章 数组与函数,3.1 数组,3.2,函数,3.3,面向对象编程初步,47,180,3.1 数组,第3章目录,数组的概念:,数组是一种复合数据类型,可用于保存一组类型相同或不相同的数据,,并把一组值映射为键。键也称为数组的索引,它可以是整型数或字符串,,相应的数组分别称为枚举数组或关联数组。键可以有一个或多个,相应的,数组分别称为一组数组或多维数组。,3.1.1 创立数组,1. 用array()创立数组,$array_name = array( key = value , . . . ) ;,其中参数key表示键名,可以是整型数或字符串;value表示与键对应的,值,可以是任何类型的值包括数组。array()语言结构返回根据参数建,立的数组。,2. 用方括号语法新建或修改数组,$arr_namekey = value ;,也可以省略键名:,$arr_name = value ;,其中key可以是整型数或字符串;value可以是任何值。,48,180,3.1 数组,第3章目录,3.1.2 遍历数组,语法1,foreach (array_expr as $value),statements,语法2,foreach (array_expr as $key = $value),statements,第一种语法格式遍历给定的,array_expr,数组。在每次循环中,当,前元素的值被赋给$,value,,并且数组内部的指针向前移一步,因此,在下一次循环中将会得到下一元素。第二种语法格式与第一种语法,格式作用相同,但当前元素的键名会在每次循环中赋给变量$,key。,49,180,3.1 数组,第3章目录,3.1.3 预定义数组,50,180,3.1 数组,第3章目录,3.1.3 预定义数组,常用的$_,SERVER,数组元素,51,180,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为空或不是数组,那么返回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并将所有其他元素向前移动一位。所有的数字键名将改为从零开始计数,字符串键名将不变。假设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_values ( array input ):返回数组input中所有的值并给其建立数字索引。,bool asort ( array &arr , int sort_flags ):对数组arr进行排序,数组的索引保持和元素的关联。假设成功那么返回true,失败那么返回false。,int count ( mixed var , int mode ):返回var通常数组中的元素数目,对任何其他类型都只有一个单元。假设把可选参数mode设为1,那么将递归地对数组计数,这对计算多维数组的所有元素尤其有用。mode的默认值是0。,52,180,3.1 数组,第3章目录,3.1.4 数组函数,array each ( array &arr ):返回数组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 . ):通过一步操作给一组变量进行赋值。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的值,那么把它作为元素之间的步进值。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 , int sort_flags ):对数组arr进行排序最低到最高,并为该数组中的元素赋予新的键名。假设成功那么返回true,失败那么返回false。,53,180,3.2 函数,第3章目录,函数概念,函数是拥有名称的一组语句,调用函数时可以向它传递一些参数,当函数执行,完毕后可以向调用代码返回一个值。在应用开发中可将屡次执行的程序代码定义成,一个函数,以便反复调用,提高工作效率。,3.2.1 自定义函数,function function_name ( $arg1, $arg2, , $argN ) ,statements,return expr ;,其中function_name是要创立函数的名称。命名函数时,应遵循与变量命名相同,的规那么,但函数名不能以美元符号$开头。函数名不区分大小写。$arg1$argN,是函数的参数,通过这些参数可以向函数传递信息。一个函数可以有多个参数,它,们之间用逗号分隔。函数的参数是可选的。参数可以是各种数据类型,例如整型、,浮点型、字符串以及数组等。,statements表示在函数中执行的一组语句。return语句用于立即结束此函数的执,行并将它的参数作为函数的值返回,也用于终止脚本文件的执行。return()是语言结,构而不是函数,仅在参数包含表达式时才需要用括号将其括起来。,54,180,3.2 函数,第3章目录,3.2.2 函数的参数,1. 通过引用传递参数,在默认情况下,函数参数通过值传递,这意味着即使在函数内部改变参数的值,,并不会改变函数外部的值。如果希望允许函数修改它的参数值,那么必须通过引用传,递参数。假设要函数的一个参数通过引用传递,那么可以在函数定义中该参数的前面预,先加上引用符号“&。,2. 设置参数的默认值,定义函数时,还可以为函数的参数设置默认值。默认值既可以是标量类型,也,可以是数组和特殊类型,例如数组和NULL。但默认值必须是常量表达式,而不能,是变量、类成员或函数调用。当使用默认参数时,任何默认参数必须放在任何非默,认参数的右侧;否那么,也许函数将不会按照预期的情况工作。自PHP 5起,默认值,可以通过引用传递。,3. 使用可变长度参数列表,在用户自定义函数中可以使用可变长度参数列表。定义可变长度参数列表时,,可以使用以下函数获取参数的信息。,func_num_args()函数返回传递给函数的参数数目。,func_get_arg()函数从参数列表中获取一个参数。,func_get_args()函数返回一个由函数参数列表组成的数组。,55,180,3.2 函数,第3章目录,3.2.3 函数的返回值,函数的返回值通过使用可选的return语句返回。返回值可以是任,何类型,其中包括列表和对象。执行return语句时,函数立即结束,运行并将控制权传递回它被调用的行。如果在一个函数中调用,return语句,将立即结束此函数的执行并将它的参数作为函数的值,返回。,3.2.4 变量函数,在PHP语言中,如果一个变量名后有圆括号,那么将寻找与变量,的值同名的函数,并且将尝试执行它。这就是变量函数的概念。变,量函数不能用于语言结构,如echo()、print()、unset()、isset()、,empty()、include()、require()以及类似的语句。,56,180,3.2 函数,第3章目录,3.2.5 变量作用域,变量的作用域与包含文件。大多数PHP变量不仅在当前PHP文件中生效,其作用域也将包含include和require引入的文件。,局部变量。在用户自定义函数中,一个局部函数范围将被引入。在默认情况下,任何用于函数内部的变量将被限制在局部函数范围内,这种变量称为局部变量。,全局变量。在任何函数外部定义的变量是全局变量。假设要在函数内部使用全局变量,可以先用global关键字来声明全局变量,然后对全局变量进行访问。在函数内部,也可以直接通过预定义数组$GLOBALS来访问全局变量。在$GLOBALS数组中,每一个变量为一个元素,键名对应变量名,值对应变量的内容。$GLOBALS之所以在全局范围内存在,是因为$GLOBALS是一个超全局变量。,静态变量。静态变量使用关键字来static来声明,它仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丧失。,57,180,3.2 函数,第3章目录,3.2.6 内部函数,1. 检查函数是否存在,bool function_exists ( string function_name ),其中参数function_name指定要检查的函数名。通过调用,function_exists函数可以检查已定义函数的列表,其中包含内部函,数和用户自定义函数。假设指定的函数存在,那么返回true,否那么返回,false。,2检查模块中包含的函数,array get_extension_funcs ( string module_name ),其中参数module_name指定模块名,必须用小写形式表示。,3检查所有已定义函数,array get_defined_functions ( void ),本函数返回一个多维数组,其中包含所有已定义函数,包括内,部函数和用户自定义函数。内部函数可以通过$arr“internal访问,,用户自定义函数可以通过$arruser访问。,58,180,3.2 函数,第3章目录,3.2.7 日期和时间处理函数,1. 设置默认时区,在,php.ini,中设置,date.timezone,选项:,date.timezone = PRC,通过内部函数,date_default_timezone_set(),来设置用于一个脚本中所有日期时间函数的默认时区:,bool date_default_timezone_set ( string timezone_identifier ),要使用中国标准时间,参数,timezone_identifier,使用时,区标识符,Asia/Shanghai、Asia/Chongqing,或,Asia/Urumqi。,59,180,3.2 函数,第3章目录,3.2.7 日期和时间处理函数,2.,获取日期和时间,array getdate ( int timestamp ),3.,格式化日期和时间,string date ( string format , int timestamp ),60,180,3.3 面向对象编程初步,第2章目录,3.3.1 类与对象,1. 创立类,class class_name ,var $property_name/ 类的属性,function method_name( ) / 类的方法,/ 方法代码,2. 创立对象,$object = new class ();,其中class表示类名。该赋值语句创立类的一个对象实例,并将该对象的一个引,用赋给变量$object。,创立对象后,即可在程序中引用对象的属性,语法如下:,$object-property,也可以在程序中调用对象的方法,语法如下:,$object-method(),61,180,3.3 面向对象编程初步,第2章目录,3.3.2 构造方法,构造方法是类中的一个特殊函数,当使用new操作符创立一个类,的实例时,构造方法将会自动调用。具有构造方法的类会在每次创,建对象时先调用此方法,所以非常适合在使用对象之前做一些初始,化工作。,在PHP 4和PHP 5中,对构造方法的处理有所不同。在PHP 4中,,如果一个函数与类同名时,那么这个函数将成为构造方法。如果一个,类没有构造方法,那么调用基类的构造方法,如果有的话。在PHP 5,中,可以在一个类中定义一个方法作为构造方法,而且构造方法的,名称统一为_construct。构造方法没有返回值。,为了实现向后兼容性,如果PHP 5在类中找不到_construct()函,数,它就会尝试寻找旧式的构造方法,也就是和类同名的函数。因,此将会产生一个兼容性问题:在类中已有一个名为_construct()的,方法,但它却又不是构造方法。,62,180,第4章 字符串与正那么表达式,4.1 字符串处理,4.2 正那么表达式应用,63,180,4.1 字符串处理,4.1.1,字符串的输出,print(),函数输出一个字符串:,int print ( string arg ),sprintf(),函数返回一个格式化的字符串:,string sprintf ( string format , mixed args , mixed . ),4.1.2,大小写转换,strtolower(),函数把一个字符串中的所有字母都转换为小写形式:,string strtolower ( string str ),strtoupper(),函数把一个字符串中的所有字母都转换为大写形式:,string strtoupper ( string str ),ucfirst(),函数把一个字符串中的首字母转换为大写形式:,string ucfirst ( string str ),ucword(),函数把一个字符串中所有单词的首字母都转换为大写形式:,string ucwords ( string str ),第,4,章目录,64,180,4.1 字符串处理,4.1.3,从字符串中删除空格,trim(),函数去除字符串开始位置和结束位置的空格或其他字符:,string trim ( string str , string charlist ),ltrim(),函数去除字符串左边的空格或其他字符并返回处理后的字符串:,string ltrim ( string str , string
展开阅读全文