当前位置:文档之家› PHP5完全攻略2

PHP5完全攻略2

PHP5完全攻略2
PHP5完全攻略2

PHP5攻略

Contents

PHP5攻略 (1)

第一篇PHP 5基础知识 (5)

第一章PHP 5概述 (5)

1.1什么是PHP (6)

1.1.1 PHP的历史 (6)

1.1.2 PHP的优点 (6)

1.1.3 PHP的精神 (7)

1.1.4 PHP与Web2.0 (8)

1.2 PHP5的新特性 (8)

1.2.1新的面向对象模式 (8)

1.2.2新的面向对象特性 (8)

1.2.3其他新特性 (8)

1.2.4 PHP5.3的新特性 (8)

1.2.5 MySQL5.1的新特性 (8)

1.3 PHP5的扩展库 (8)

1.3.1 PHP的内部扩展库 (8)

1.3.1.1 XML扩展 (8)

1.3.1.2 SPL (10)

1.3.1.3 MySQLi扩展 (10)

1.3.1.4 PDO数据库抽象层 (10)

1.3.1.5 JSON扩展 (10)

1.3.2 PHP的外部扩展库 (11)

1.3.2.1 PECL扩展 (11)

1.3.2.2 PEAR扩展 (11)

1.4 PHP5的其他更新 (12)

1.4.1 Zend引擎2 (12)

1.4.2新的内存管理器 (12)

1.4.3 Zend Optimizer和Zend Core (12)

1.5 PHP与Web服务器 (12)

1.5.1 Apache (12)

1.5.2 MicroSoft IIS (12)

1.5.3其他服务器 (12)

1.6本地环境的安装与配置 (12)

1.6.1 Win32平台下Apache环境的安装和配置 (12)

1.6.2集成安装包 (12)

1.7 PHP配置与初步优化 (12)

1.8 PHP开发工具 (12)

第2章PHP 5开发基础 (12)

2.1 PHP初探 (12)

2.1.1 PHP语句 (13)

2.1.2 空格和空行 (13)

2.1.3 注释 (13)

2.1.4 函数调用 (13)

2.2 变量与变量名 (13)

2.3 变量的赋值 (13)

2.4 变量的引用赋值 (13)

2.5 PHP的数据类型 (13)

2.6 标量数据类型 (13)

2.7 复合数据类型 (13)

2.8 特殊数据类型 (13)

2.9变量打印与输出 (13)

2.9.1 使用echo语句 (13)

2.9.2 使用print函数 (14)

2.9.3 echo和print的区别 (14)

2.9.4 使用printf函数 (14)

2.9.5 使用sprintf函数 (15)

2.9.6 显示数组与对象 (16)

2.10 变量操作符 (18)

2.11 数据类型的自动转换 (18)

2.12 数据类型的强制转换 (18)

2.13 超级全局数组 (18)

2.14 变量与脚本处理 (18)

2.15 常量 (18)

2.16 PHP的控制结构 (18)

2.17 包含控制语句 (18)

2.18 函数 (18)

2.18.1 函数的命名 (18)

2.18.2 函数的结构 (19)

2.18.3 从函数中返回值 (19)

2.18.4 函数参数的传递 (19)

2.18.5 函数与全局变量 (20)

2.18.6 函数中的静态变量 (20)

2.18.7 函数中的常量 (21)

2.18.8 递归函数 (21)

2.18.9 解决函数重名的方法 (21)

2.19 可变变量 (22)

2.20 字符串操作 (22)

2.20.1 手动转换字符串序列 (22)

2.20.2 自动转换字符串序列 (22)

2.20.3 数值转换字符串 (22)

2.20.4 字符串序列化 (22)

2.20.5 清理字符串中的空格 (22)

2.20.7 字符串切分 (22)

2.20.8 字符串截取 (22)

2.20.9 计算字符串的长度 (23)

2.20.10 字符串的单词统计 (23)

2.20.11 字符串查找 (23)

2.20.12 字符串处理 (24)

2.21 日期与时间 (24)

2.21.1 UNIX时间戳 (24)

2.21.2 日期函数 (24)

2.21.3 时间函数 (24)

2.22 网络相关处理 (24)

2.22.1 header函数 (24)

2.22.2 处理URL字符串 (24)

2.23.3 获得PHP的环境变量 (26)

2.23 其他操作符 (26)

2.23.1 @符号 (26)

2.23.2 执行外部命令 (26)

第3章正则表达式 (26)

第4章PHP数组 (26)

4.1 什么是数组 (26)

4.2 数组的类型 (27)

4.2.1 数字索引数组 (27)

4.2.2 关联数组 (27)

4.3 数组的构造 (28)

4.3.1 一维数组 (28)

4.3.2 一维数组和多维数组 (29)

4.3.3 多维数组 (29)

4.4 快速创建数组 (29)

4.4.1 使用range()函数 (29)

4.4.2 为数组追加数据 (29)

4.4.3 修改数组内容 (29)

4.5 访问和处理数组的内容 (29)

4.5.1 数组索引数组排序 (29)

4.5.2 关联数组排序 (29)

4.5.3 数组随机抽取shuffle()和array_rand() (29)

4.5.4 统计数组元素出现的次数 (29)

4.5.5 数组联合array_combine (29)

4.5.6 数组合并array_merge (29)

4.5.7 查找数组中键名是否存在 (29)

4.5.8 超找数组中值是否存在 (29)

4.5.9 计算数组中数值元素的和 (30)

4.5.10 去除数组中重复的元素值 (30)

4.5.11 移动数组内的指针 (30)

4.5.13 访问数组的键名和元素 (30)

4.5.14 判断数组的类型 (30)

4.5.15 显示数组的内容与结构 (30)

4.5.16 移动数组中指定元素 (30)

4.5.17 在数组顶部插入元素 (30)

4.5.18 在数组任意位置插入元素 (30)

4.5.19 数组元素统计函数count()和sizeof() (30)

4.5.20 数组键名与值的对调array_flip() (30)

4.5.21 对数组元素分组统计array_values() (30)

4.5.22 删除数组首末尾元素 (30)

4.5.23 删除数组中任意位置的元素 (30)

4.5.24 讲述组内容导出为变量extract() (31)

4.6 数组的遍历 (31)

4.6.1 一维索引数组的遍历 (31)

4.6.2 一维关联数组的遍历 (31)

4.7 使用for语句对数组遍历 (31)

4.8 使用for语句实现树状菜单 (31)

4.9 数组遍历list()和each() (31)

4.10 数组复位函数reset() (31)

4.10.1 each() (31)

4.10.2 list() (31)

4.11 foreach和for语句对数组处理的比较 (31)

4.12 数组内容过滤 (31)

第二篇PHP 5核心应用与规范 (31)

第5章表单——处理用户输入 (31)

5.1 表单与HTML (31)

5.2 表单与PHP (32)

5.3表单设计 (32)

5.3.1 文本框 (32)

5.3.2 密码框 (32)

5.8.3 避免表单重复提交 (32)

5.8.5 判断表单动作的技巧 (33)

第6章PHP加密技术 (33)

6.1 MD5算法 (33)

6.2 SHA-1算法 (33)

6.3 Cracklib扩展库 (33)

第7章PHP国际化与本地化 (34)

第8章PHP开发规范 (34)

第9章PHP 5面向对象开发 (34)

第10章PHP会话管理 (34)

第11章PHP输入输出缓冲 (34)

第12章文件系统与字符流 (36)

第三篇MySQL 5与PHP 5接口 (36)

第13章WEB数据库设计 (36)

第14章MYSQL 5数据库 (36)

第15章MYSQL数据库数据操纵 (36)

15.1 MySQL操作与SQL (36)

15.2 检索表中的数据 (37)

15.3 高级SQL技术 (38)

15.4 MySQL事务处理和触发器 (38)

第16章PHP与MYSQL数据库接口 (38)

16.1 PHP5与MySQL链接的mysql扩展 (38)

16.2 数据库查询 (38)

第17章PHP数据库抽象层 (38)

第四篇PHP 5进阶与技巧 (38)

第18章SMARTY与模板技术 (38)

第19章PHP和AJAX技术 (38)

第20章使用PHP编写SHELL (38)

第21章PHP网络开发 (38)

第22章PHP文件上传 (40)

第23章图片与媒体处理 (40)

第24章XML与RSS (41)

第25章WEB服务与SOAP (41)

第26章PHP与WAP技术 (41)

第五篇PHP 5调试、升级与优化 (41)

第27章错误与异常处理 (41)

第28章升级到PHP5 (41)

第29章PHP优化技巧 (41)

附录A PHP在线资源 (41)

附录B Zend Core安装 (41)

附录C PHP扩展开发 (41)

附录D MySQL字符集与整理 (41)

附录E 代码页与Charset对照表 (41)

附录F php.ini配置详解 (41)

附录G HTTP返回代码表(RFC2068) (41)

第一篇PHP 5基础知识

第一章PHP 5概述

本章关于PHP的历史、发展、普及。

1.1什么是PHP

PHP:HyperText Preprocessor,超文本与处理器。

1.1.1PHP的历史

1.PHP/FI

PHP起源与1995年,由当时年仅17岁的丹麦程序员Rasmus Lerdorf编写完成,起初是使用Perl语言开发的服务器端脚本,用于跟踪用户信息。由于主要功能是表单的转换和信息搜集工作,又成为Personal Home Page和Form Interpreter.

随着网站功能的增加,Rasmus用C语言重写了PHP/FI的底层,实现网站和数据库的交互

2.PHP3

1997年11月,PHP/FI2.0发布。这一年,Andi Gutmans和Zeev Suraski和Lerdorf合作,宣布正式接任构建和升级PHP的工作,并按照GNU标准重新规划名字的缩写为PHP Hypertext Preprocessor。

PHP3公开测试9个月后,与1998年6月正式发布。

PHP3提供大量实用功能和可扩展性,并具备见识的底层架构,提供面向对象语法,并支持常用数据处理。

3.PHP4

Andi Gutmans和Zeev Suraski重写PHP核心。1999年,Zend公司发布PHP引擎,即ZendEngine。

有了Zend引擎的PHP4具有强大的功能和优异的性能。还支持多服务器、支持Session 会话、支持输入输出缓冲等。

4.PHP5

PHP4基本可以胜任绝大多数Web应用。但是PHP4面向对象机制缺失,在开发大型企业级应用方面力不从心。

PHP5全面支持面向对象。

PHP5开发cli版本。

5.PHP6

尚未发布。

1.1.2PHP的优点

//PHP5

PHP主要功能与应用有三大领域:

1、服务器端脚本

2、命令行/Shell脚本

3、客户端用户界面

PHP简单,适合快速学习,有众多的扩展库,有活跃的用户群和社区支持,安全性高,运行稳定。

PHP是性能优越的编译程序,又具有解释过程的有点,是动态语言的代表。

PHP函数语句简洁明了

PHP输出控制灵活,可以在HTML中嵌入PHP代码,也可以由PHP输出HTML语言,或者在命令行下执行,将结果输出到其他设备。

PHP支持模板,实现程序逻辑与用户界面分离

跨平台

与多个服务器兼容,包括Apache MicroSoft IIS LightHttpd Nginx

完全支持面向对象开发并向下兼容,支持面向过程开发。

内嵌Zend引擎加速。

内置函数丰富,几乎包含Web开发的所有方面。

组件化开发,提供多种数据库访问接口,支持ODBC

扩展性好,支持Win32系统的COM对象

支持正则表达式,内置POSIX与Perl,兼容两类正则表达式。

免费。

应用广泛https://www.doczj.com/doc/ae5278447.html,/usage.php

完全支持企业级开发

支持MVC框架开发

PHP6全面支持多线程国际化

PHP支持桌面程序开发

支持加密分发代码,Zend Optimizer不仅是PHP实现编译运行,实现速度的飞跃,还可以完全加密PHP源代码。

1.1.3PHP的精神

PHP起源于自由软件,即开放源代码软件。

1.1.4 PHP与Web

2.0

1.2 PHP5的新特性

1.2.1新的面向对象模式

1.2.2新的面向对象特性

1.2.3其他新特性

1.2.4 PHP5.3的新特性

1.2.5 MySQL5.1的新特性

1.3 PHP5的扩展库

PHP5的扩展库包括标准库SPL(Standard PHP Library)和外部扩展PECL(PHP Extension Community Library)。标准库即被编译到PHP内部的库。历史上标准库指的是Standard扩展(默认即编译进PHP),但5.0出现后,标准库实际上成了代名词。PHP5新增内置标准扩展库:XML扩展库——DOM,SimpleXML以及ICONV,SQLite等,而类似MySQL、MySQLI、Overload,GD2等这些库则被放在PECL外部扩展库中,需要时在php.ini配置文件中选择加载。

1.3.1 PHP的内部扩展库

1.3.1.1 XML扩展

在PHP5中,所有的XML扩展已经被全部重写,使用libxml2中的XML工具包(参考网址:https://www.doczj.com/doc/ae5278447.html,/),它为PHP的XML操作提供了更多丰富和高可维护性的技术。

在PHP5.1后,上述所有扩展(包括SAX\DOM及XSLT)已经全部集成在PHP软件发行包中,其中包括SimpleXML和SOAP功能。我们可以用PHP5提供对XML的强大处理功能,比如对RSS\Web Service的数据分析、处理等。

1、DOM

DOM全称为Document Object Model,在PHP4版本中,已经使用了libxml2库对DOM 的支持,但是存在内存泄漏的Bug,并且该API对W3C也不太兼容。

在PHP5中,DOM扩展已经实现完全支持,不仅是扩展库已经重新写并被集成到PHP,而且对W3C标准全面兼容。

2、SimpleXML

现在PHP开发者在操作使用XML时,又多了一种选择——SimpleXML,这是PHP5全新开发的外部扩展库,用以替代DOM或较难用的SAX。

SimpleXML将XML文件视为一个PHP对象,可以读写以及重载,而只需要简单的访问元素以及属性就可以了,请看下面的XML文件。

张三

8801872348385371

李四

8801723843291345

下列程序将打印XML文件中的每个客户的名字和帐号

$clients = simplexml_load_file('clients.xml') ;

foreach($clients->client as $client){

echo "$client->name 的账号名称$client->account_number\n ;

}

?>

3、XML Reader

PHP5引入了新的类XMLReader,用于读取可扩展标记语言(Extensible Markup Language,XML)。与DOM和SimpleXML不同的是,XML Reader以流的模式进行操作,即从头到尾读取文档,在文档后面的内容编译完成之前,可以先处理已编译好的文档前面的内容,从而实现快速、高效、节省的使用内存。

4、SOAP扩展

SOAP协议(Simple Object Access Protocal ,简单对象访问协议)是WEB服务(Web Service)的一种,用以解决异构系统之间的信息传递问题,如PHP与.NET Web Service之间的消息共享,PHP与Java Web Service的互通等。

在PHP5中,已经完全重写了对SOAP支持的扩展库,也不需要再使用Pear SOAP或nusoap 类库。下例为调用SomeFunction()的一个WSDL文件。

$client = new SoapClient("someurl.wsdl") ;

$client -> SomeFunction($a , $b , $c) ;

?>

由于SOAP功能被PHP5封装在内部扩展库中,执行速度与效率都比使用外部类库要高,这样能够更容易创建和使用WEB服务。

1.3.1.2 SPL

SPL-Standard PHP Library (PHP标准库)是为解决一些在WEB开发中普遍存在的问题,在PHP5中提供了一系列的接口(interface)和类(class)的类库。

SPL为PHP开发者提供了迭代器(Iterator)、数组对象(ArrayObject)、运行时异常处理(RuntimeException、InvalidArgumentException等)、观察者模式(Observer Parttern)等数据容器与解决方案。

可以使用下面方法查看可用的SPL类。

print_r(spl_class) ;

?>

1.3.1.3 MySQLi扩展

PHP5重新编写了一套新的MySQL数据库扩展库——MySQLi,它提供了新的特性以及针对新版本MySQL5.X的优化功能,这个扩展提供了两个接口,分别用于面向过程的和面向对象,PHP开发者可以任选一种样式进行开发。

MySQLi扩展还支持prepared预执行、变量绑定以及SSL连接支持、数据压缩连接、事务控制等实用的功能和方法。

1.3.1.4 PDO数据库抽象层

PDO(PHP Data Object)是PHP5中新加入的数据库抽象层,直接预装到PHP的扩展中,主要为了解决访问不同数据库统一接口的问题。

PDO类似于数据库抽象层对象驱动(Database Abstraction Layer),如PEAR :: DB类和ADODB数据库抽象类的操作,这给数据库间迁移的通用性和开发程序的易用性带来极大的方便。

如果采用PDO扩展进行WEB开发,可以像使用著名的ADODB、PEAR :: DBS数据库抽象类一样,使用像fetchAll,fetchAssoc等多种方法取得记录集,使程序逻辑更简洁清晰。

由于PDO是底层开发的C代码开发编译,因此执行效率较高,同时也提高了PHP 代码层的通用性和可读性,调试起来更加方便。

PDO是随PHP5.1软件包正式分发的,目前已经支持绝大多数的主流数据库系统,如MySQL,Oracle,MS SQL Server等常用的数据库管理系统。

1.3.1.5 JSON扩展

JSON全称为JavaScript Object Notation,是一种非常轻量级的数据交换格式,自PHP5.2起,正式在内部集成JSON功能。

JSON是基于JavaScript Programming Language , Stantard ECMA-262 3rd Edition-Dcember 1999的一个子集,它主要利用了成对的{}来包住各个object(对象),用成对的[ ]来包住各个array(数组),用成对的" "来包住字符串,用逗号来区隔各变量,数据类型有字符串(string),数组(array),对象(object)。

JSON主要用于JavaScript与服务器端脚本的交互。

1.3.2 PHP的外部扩展库

1.3.

2.1 PECL扩展

PECL是PHP Extension Community Library 的简称,意为PHP社区扩展库PECL与官方PHP开发小组开发和发布的扩展库很相似,均作为PHP的扩展库,PECL已C/C++作为底层语言开发,在PHP社区上发布,而不需要PHP开发小组认证

在Linux/FreeBSD系统默认情况下,PECL扩展没有包含在PHP5的安装包内,也就是说需要再安装这个包,而WINDOWS的PHP压缩包已经存在部分常用PECL扩展库,无需再安装

1.3.

2.2 PEAR扩展

PEAR是一个PHP代码库,为标准程序功能提供纯粹的PHP代码预先编写的类,包含了有丰富特性的功能类库,包括数据库邮件时间和错误处理等,从而会大大降低应用程序的开发时间

在采用PEAR库的情况下,开发人员就可以部署和增强已经编写的基本函数,同时把注意力集中到编写软件新功能和商业逻辑方面

1.4 PHP5的其他更新

1.4.1 Zend引擎2

1.4.2新的内存管理器

1.4.3 Zend Optimizer和Zend Core

1.5 PHP与Web服务器

1.5.1 Apache

1.5.2 MicroSoft IIS

1.5.3其他服务器

1.6本地环境的安装与配置

1.6.1 Win32平台下Apache环境的安装和配置

1.6.2集成安装包

1.7 PHP配置与初步优化

1.8 PHP开发工具

第2章PHP 5开发基础

2.1 PHP初探

2.1.1 PHP语句

2.1.2 空格和空行

2.1.3 注释

2.1.4 函数调用

2.2 变量与变量名

2.3 变量的赋值

2.4 变量的引用赋值

2.5 PHP的数据类型

2.6 标量数据类型

2.7 复合数据类型

2.8 特殊数据类型

2.9变量打印与输出

PHP有多种输出语句或者函数,如echo、print、printf、sprintf、print_r、var_dump等

2.9.1 使用echo语句

echo是PHP语句,不是函数,没有返回值。用以输出文字或变量内容(必须是字符串类型或者可以转换成字符串类型的数据)。不能输出对象。

$a = 12345;

$b = “hello,world!”;

Echo $a;

Echo $b;

?>

2.9.2 使用print函数

格式:int print(string $paras) 不是函数,而是语句结构

$version = 5.3.3;

Print $version;

?>

2.9.3 echo和print的区别

echo没有返回值,而print会有一个布尔值(true或false)。Echo效率稍高。echo可以用逗号或者点号连接多个字符串,print只能用点号连接。

echo ‘hello’,’world!’;

echo ‘hello’.’world’;

//print ‘hello’,’world!’;语法错误

print ‘hello’.’world’;

?>

2.9.4 使用printf函数

格式:boolean printf(string format[,mixed args])

用于格式化输出字符串,用于字符串中以%开头的格式字符串的替换

%ld 按十进制长整型输出

%s 按字符串输出

%f 按负点数输出

Printf(“%s由詹姆斯卡梅隆导演,全球票房超过%d亿元”,”阿凡达”,10); ?>

参数交换

$format = 'There are %d monkeys in the %s';

$num = 4;

$location = “tree”;

printf($format, $num, $location);

?>

Output:There are 5 monkeys in the tree

出于某种目的,如果我们更改了格式字符串。比如,国际化问题。

$format = 'The %s contains %d monkeys';

$num = 4;

$location = “tree”;

printf($format, $num, $location);

?>

这段代码就碰到了问题。格式字符串中参数的顺序和传给printf的参数顺序不一致。PHP 中可以使用参数交换。如下:

$format = 'The %2$s contains %1$d monkeys';

$num = 4;

$location = “tree”;

printf($format, $num, $location);

?>

%1,%2…就是传给printf后面的参数1,参数2。。。

使用参数交换另外一个好处就是,可以重复使用某个参数,而不需要传给printf多个相同的参数。如:

$format = 'The %2$s contains %1$d monkeys.

That\'s a nice %2$s full of %1$d monkeys.';

$num = 4;

$location = “tree”;

printf($format, $num, $location);

?>

2.9.5 使用sprintf函数

格式:string sprint(string format,mixed[args]…)

用于字符串格式化。与printf基本相同,但是他可以将转换后的结果保存到一个字符串变量中,而不是直接输出。

$var = 1234.23;

echo s print(“%1.4f,$var);

?>

格式化字符串%01.2f中,%表示格式化字符串的开始,即起始字符,f表示类型标识符,表示这个格式化字符串的结束。%后面的0表示填充字符,如果有空位置用0填充。在0后面的1表示小数点前面必须有1位以上

$var = 4.2;

echo s printf("%05.2f",$var);

?>

结果是4.20????

2.9.6 显示数组与对象

数组与对象都是PHP的复合数据类型。在PHP中使用print_r、var_dump等方法打印数组或对象

print_r($array/$object) print array

class hi

{

private $test;

function __construct($test)

{

$this->test=$test;

}

}

$H = new hi("hi");

print_r($H);

?>

结果:

hi Object

(

[test:hi:private] => hi

)

Var_dump($object/$array/$var) variable dump

将对象、数组、变量全部输出出来。

class hi

{

private $test;

function __construct($test)

{

$this->test=$test;

}

}

$H = new hi("hi");

Var_dump($H);

?>

结果:

object(hi)#1 (1) {

["test":"hi":private]=>

string(2) "hi"

}

Var_export($array/$object/$var[,true])

输出或者返回一个变量的字符串表示。此函数输出变量的结构信息,而且是合法的PHP 源代码。通过将第二个参数设为true,可返回一个该结构信息

class hi

{

private $test;

function __construct($test)

{

$this->test=$test;

}

}

$H = new hi("hi");

var_export($H,true);

?>

结果:

hi::__set_state(array(

'test' => 'hi',

))

综上所述:

echo print printf都可以打印变量内容,但是不能显示数组

print_r var_dump不仅可以打印数组、标量变量,还可以打印对象

var_dump不仅能打印变量、数组,还可以显示bool或者资源的内容

var_export返回参数的结构信息,而且是合法的PHP代码

2.10 变量操作符

2.11 数据类型的自动转换

2.12 数据类型的强制转换

2.13 超级全局数组

2.14 变量与脚本处理

2.15 常量

2.16 PHP的控制结构

2.17 包含控制语句

2.18 函数

函数是完成一个特定功能的代码的集合。PHP的函数分为系统函数和用户自定义函数。一个开发团队的不同开发人员可以分别编写不同的函数,然后在程序中调用这些函数或者传递给函数一个或多个参数来实现特定的功能。

函数通过参数来做不同细节的处理,达到代码的重用性,提高开发效率,节省开发时间。

2.18.1 函数的命名

PHP约定函数的命名比较宽泛,大小写不限(实际上也不区分大小写,也就是说getName 和getname是同一个函数),参数个数不限,甚至可以是中文(由于目前编码问题没有很好的解决,所以尽量不要用。PHP6对编码做了很大改进,期待…)。

推荐的风格:

函数名称能很好的提示他的功能,比如用动宾结构getName()

Camle风格或者下划线,标名前缀。

返回布尔值,使用is开头,Is_string()等

2.18.2 函数的结构

PHP函数结构如下:

function 函数名称([参数1,参数2,参数3…])//方括号表示可选

{

//函数体

}

函数体最后可以用return语句,将标量变量、数组、布尔值返回给调用者

调用格式如下:

函数名称([参数1,参数2,参数3…]);

函数中的变量是局部变量,注意变量的域的概念。

虽然PHP是解释性语言。但是当调用语句和函数的实现在同一个脚本重视,二者没有必要的先后顺序。也就是说,可以先出现调用语句,再出现定义函数语句。

2.18.3 从函数中返回值

有时候,分支或者循环语句需要函数执行结束后再返回到调用处。(实际上,函数调用是栈的概念,函数执行结束后,一般都要返回到调用开始的地方,将程序的执行权返回给调用者)

PHP中使用return语句,实现函数的返回值。

PHP函数可以返回标量变量、数组、布尔值。

2.18.4 函数参数的传递

默认参数,函数的参数在定义时指定默认值,再调用的时候如果不传参数,那么函数就按既定的默认值进行处理。如果函数有多个参数,默认参数必须从最后一个开始。

Function getName($dep,$num=1119)//right

Function getName($dep =21,$num){}//wrong

?>

可变参数,像sprintf等格式化输出函数,处理可变个数的参数。这里提供几个工具函数func_num_args()返回当前函数参数的个数;func_get_arg($num)返回第$num个参数;func_get_args()以索引数组的方式返回当前函数参数。

function test()

{

echo "哈哈";

echo func_num_args()."个参数\n";

echo "第二个参数是".func_get_arg(1);

print_r(func_get_args());

}

?>

结果:哈哈5个参数

第二个参数是2Array

(

[0] => 1

[1] => 2

[2] => 3

[3] => 4

[4] => 5

)

按值传递,只需要在函数头的小括号中加入参数名即可。

按引用传递,在参数前加&符号

更多关于引用与值参加PHP手册。

2.18.5 函数与全局变量

作用域,scope。

Global关键字,以及$GLOBALS超级数组

$foo = "sss";

function func()

{

global $foo;

++$foo;

}

func();

echo $foo;

?>

注意事项:

在函数内部声明的变量作用域从声明开始一直到函数结束都有效。

在函数外部声明的变量作用域从声明开始到脚本的结束。

使用文件包含(include和require)不影响作用域

使用关键字global或者$GLOBALS[]全局数组可以手动指定一个全局变量

一般传递给函数的参数都是值传递,是局部变量,除非按引用传递。

使用unset()函数可以手动删除一个变量,该变量在其作用域内也同时被销毁。

2.18.6 函数中的静态变量

在函数中定义的局部变量,在变量调用结束后,这个变量的值就被销毁,不再保留。如果在函数中使用静态变量,当函数执行结束后,再次调用函数,可以取到原来用过的值,也就是说系统保存了原来执行过后静态变量的结果。

在函数中声明静态变量,用关键字static

地球帝国秘籍

在游戏中按下回车输入,然后再按下回车即可(若游戏中不能输入中文按Ctrl+C复制即可):我的名字是methos:所有资源加十万,地图全开,快速建设,所有单位升级………… asus驱动器:地图全开 headshot:从地图上移去所有目标 atm:增加1000金钱 rockroll(&R):增加1000石材 肌氨酸:增加1000铁 波士顿食物吸:增加1000食物 你说木头:增加1000木材 全部的你的底部是属于我们:所有资源增加10万 欺骗代码:显示所有秘籍 灵机一动:快速建设 波士顿租:失去所有金钱 大的掘:失去所有资源 uh,烟?:失去所有木材 ahhhcool:游戏失败 重要人物建立我们炸弹:赢得胜利 哥伦布:看见所有的动物们 可引用的膝盖骨:所有的单位升级 我有能力:所有的先知能量全满 开启作弊:icheat 关闭作弊:idontcheat 增加10000资源:loot 减少100资源:taxes 对选定的单位造成20点伤害:punish 把选定的单位变成你的:convert 给选定的单位补充100%的能量:recharge me 立即胜利:win 开/关战争迷雾:toggle fog 开/关立即建造:sea monkeys 立刻升级时代:epoch up 增加50点科技点数:give tech 开/关上帝模式:play god 回答者:春夏秋氡- 都司六级2009-2-11 17:34 这个没办法地球帝国1的秘籍没有增加人口这一项. 人口的上限跟地图有关和单位最大限制有关 回答者:Sun793757065 - 试用期一级2009-2-11 17:39 体育馆可以增加自己的人口,同时降低对手的人口数 文明有的文明有额外人口奖励,比如:中国 科技医学,种牛逗等科技可以额外增加人口数

家园2——对战秘籍

家园2——对战秘籍 FA和S C特有的?程和经济系统,往往让初学者感觉到很难?门,本?就从这2????,帮助新??门。 经济系统:和传统RT S不?样,FA和S C的经济包括m a s s(质量)和 E n e r g y(能量)以每秒产量+储量来表现,储量相对?较少,每秒产量相对?较重要,如果储量满了,产 量还?于消耗,那就??浪费了。初学者需要掌握好M、E的消耗,要掌握收?平衡,超?太多是?常不健康的经济。 ?程系统,FA的?程系统分?程兵和??,都分3级别,?级别的能造低级别的东西(如3级??能造1、2、3级??的东西,2级??只能能造1、2级??的东西,3级?程 兵能造1、2、3、4级的建筑、兵种,2级?程兵能造1、2级的建筑)。这?有?会问既然3级的什么都能造,为什么还需要其他级别的呢???好理解,没有?级的造,是要 靠升级来的,??兵呢?这个关系到消费和效率的问题,见后表。 协助,FA虽然??削减了协助效率,但是协助也是不可少的(后表列出了各种?程单位的效率?),看着?个要造??分钟的东西,资源充?的话,协助建造下,很快就能 造出来。 发展,?先说?下,FA的经济多样性,决定了有很多种发展?式,我这?总结的发展?式??是根据后?表??的费效?的出的发展线路,经过对战,发现这确实可?。看 费效?,矿点是最低的,所以第?位的是尽可能抢夺地图上的矿点、破坏对?的矿点。第?位的就是升级?级矿点,当你的m a s s+的时候,那就升级?个矿点。第三位的就 是围m a s s罐?了,当你家?的,可靠的矿点都升级成t2了,就围m a s s 罐?,围完了罐?的t2矿点就可以升级t3了,这样能把费效?始终控制在250左右。 家?的矿点都围上罐?,都升级成t3了,这是,你已经有?较可观的经济收?了(?般有6-8个),家?的??般也已经升级到t3了,这时候你就可以考虑开始造t4了。 经济建设不能停?,这时,看地图形势,可以考虑升级?些外围矿点到t2,同时家?要开始造1T3P+16T2M F的组合了。 以上是?般的经济发展思路。 下?再来说?下协助问题,光看费效?的话,依旧是t1?程兵协助最划算,这?还要再考虑2个因素,??造完兵到兵下线的时间是不?产的(效率为0),每个??围的? ?兵数量是有限的(需要?效率的协助),综合这2个因素,多??升级

地球帝国2中文版正确秘籍

地球帝国2中文版正确秘籍 最佳答案 ROCK ON 1000石头 LUMBERJACK 1000木头 ROBIN HOOD 1000黄金 CHEESE STEAK JIMMY`S 1000食物 MARCO 显示地图 POLO 去掉黑影 AEGIS 加快建筑速度 WIMPYMIMWIMPY 自我毁灭 I LOVE THE MonKEY HEAD 获得VDML HOW DO YOU TURN THIS ON 获得一辆眼镜蛇汽车TORPEDO 击败对手 TO SMITHEREENS 获得SABOTEUR BLACK DEATH 毁灭所有敌人 I R WINNER 获胜 也可以通过命令行方式添加不通的参数启动游戏 800:设置屏幕显示方式为800*600模式 1024:设置屏幕显示方式为1024*768模式 1280:设置屏幕显示方式为1280*1024模式

AUTOPSAVE:在游戏中每五分钟自动存 Mfill: 消除在某些显示卡中可能会出现的水平线或者是黑屏现象MSYNC:消除某些SOUNDBLASTER AWE声卡引起得计算计停止响应的现象 NOMUSIC:关闭所有的音乐 NORMALMOUSE:把自定义的鼠标换成标准鼠标指针 NOSOUND:关闭所有动话以外的音乐 NOSTARTUP:忽略游戏开始前的所有动画NOTERRAINSOUND:关闭所有有关地形的音效 密技启用: dakai 密技停用: guanbi 资源增加10000: 10000 资源减少100: 100 使被选择的部队受到伤害: bianta 使被选择的部队变节到你的阵营中: guolai 使被选择的部队能力恢复为100% : recharge me 你在此剧本中获胜: win

帝国时代 秘籍

帝国时代3 按enter键(即回车键)然后输入秘籍: A recent study indicated that 100% of herdables are obese - 地图上所有动物身上的肉增加到最多 Give me liberty or give me coin - 加10000金 Medium Rare Please - 加10000食物 Nova & Orion - 加10000经验值 - 加10000木材 X marks the spot - 地图全开 speed always wins - 建造速度和采集速度x100 tuck tuck tuck - 6WHP,1200攻击的大脚车。。(对军队全是秒杀。。比帝2的奔驰还爽呢~~) this is too hard -直接胜利(只用于剧情,普通游戏没用。。) where's that axe? - 从主城生产出华盛顿喷火石像(HP是999999。。同大脚车斗殴,比它还厉害。。) ya gotta make do with what ya got -从主城生产出“中型火炮”。。1秒钟发射一炮,,换弹速度可想而知。。攻击力5000.。。。。。。(只是HP才550而已-_-||||| 不过没有什么能够走近他身边吧。。) 帝国时代2 ROCK ON 1000石头 LUMBERJACK 1000木头 ROBIN HOOD 1000黄金 CHEESE STEAK JIMMY'S 1000食物 MARCO 显示地图 POLO 去掉黑影 AEGIS 加快建筑.建造单位速度(但所有人都和你一样秒建) NATURAL WONDERS 控制自然生物(但是无法控制自己人,而且变不回来!)

地球帝国操作

你好,首先代表地球玩家欢迎你的到来! 地球是一款优秀的即时战略游戏,有很深的内涵,其包括的年代多,兵种多,民族多,比其他同类游戏复杂,因而容易造成早期上手难,初期感觉上混乱,这也是很多人没有坚持下去的原因。为了使新手尽快脱离早期上手难的阶段,作为一个多年地球玩家,给新手一些我的心得,希望对你们有些帮助。 首先我先从新手容易犯的一些常见错误说起,地球这款游戏新手最容易犯的错误就是不论什么年代始终使用同一个民族,其实这是对游戏不了解造成的,地球的特点也是它吸引人的地方就是不同的年代拥有不同的民族以及相应的经济特点和兵种特点,这要求我们在不同的年代开局使用不同的文明,因为同一个文明在不同的年代,它的经济变化是很大的。再有就是新手在多人对战中,经常是闷头发展,不去帮助盟友,地球对战的乐趣在于多人配合作战,配合是这款游戏的最大乐趣,也是战术变化的前提。因此我建议新人早期可以先和容易的电脑打,从原始打起,把所有年代经历一遍,目的是熟悉地球各时代,各民族的经济及兵种特点,不要多,只要熟悉了就行(电脑会作弊,打多了对技术提高也帮助不大)。然后多看老鸟的1V1,那会对你的提高有很大帮助,然后自己建主机进行实践。在多人对抗中,建议新人进去后说明自己是新人,并最好在前家而不是后家,一个是对你技术是一种锻炼,也可以保持大家游戏的可玩性,因为前家不会,后家高手也能打, 下边我把我以前和最近总结的发下,以供参考。 时代前家后家 原始————石器(铜器)奥地利奥地利亚速 铜器————青铜奥地利法兰克亚速 黑暗————中世纪亚速罗马拜占庭亚速 文艺————工业西班牙亚速奥地利 一战————微子(这个阶段跨度大,变化多)英国 西班牙,叛军,英国,俄罗斯,法国 快捷键及两个主要快捷键的使用: 1)快捷键 视图的按键/ View Keys Up Arrow 往上/ Scroll Up Down Arrow 往下/ Scroll Down Left Arrow 往左/ Scroll Left Right Arrow 往右/ Scroll Right Right Bracket 视野放大/ Zoom in Left Bracket 视野正常/ Zoom out Period 跟著部队/ Follow Unit

相关主题
相关文档 最新文档