一、什么是数组
数组就是一组数据的集合,把一系列数据组织起来,形成一个可 *** 作的整体。数组的每个实体都包含两项:键和值。
二、声明数据
在PHP中声明数组的方式主要有两种:一是应用array()函数声明数组,一是直接为数组元素赋值。
1array()函数声明的数
一、什么是数组
数组就是一组数据的集合,把一系列数据组织起来,形成一个可 *** 作的整体。数组的每个实体都包含两项:键和值。
二、声明数据
在PHP中声明数组的方式主要有两种:一是应用array()函数声明数组,一是直接为数组元素赋值。
<1>array()函数声明的数组的方式array([mixed...])
参数mixed的语法为key=>value
如,<?php
$array=array("1"=>"编","2"=>"程","3"=>"词","4"=>"典")
print_r($array)
echo
"<br>"
echo
$array[1]
//注意:下标默认是从0开始
echo
$array[2]
echo
$array[3]
echo
$array[4]
?>
<2>直接为数组元素赋值。如果在创建数组时不知所创建数组的大小,或在实际编写程序时数组的大小可能发生变化,采用这种数组创建的方法较好。
如,<?php
$array[1]="I"
$array[2]="love"
$array[3]="PHP"
print_r($array)
//输出所创建数组的结构
?>
三、数组的类型
PHP支持两种数组:索引数组(indexed
array)和联合数组(associative
array),前者使用数字作为键,后者使用字符串作为键。
四、输出数组
在PHP中对数组元素输出,可以通过echo和print语句来实现,但这只能对数组中某一元素进行输出;要将数组结构输出则要使用print_r()函数,其语法:print_r(mixed
expression),参数expression为普通的整形、字符型或实型变量则输出该变量本身,如果该参数为数组,则按一定键值和元素的顺序显示出该数组中的所有元素。
五、数组的构造
一维数组:
当一个数组的元素是变量时,则称其为一维数组。
声明一位数组:
类型说明符
数组名[常量表达式];
二维数组:
当一个数组的元素是一个一位数组时,则称之为二维数组。
如,<?php
$str
=
array
(
"网络编程语言"=>array
("PHP","JSP","ASP"),
"体育项目"=>array
("m"=>"足球","n"=>"篮球"))
print_r
(
$str)
?>
六、遍历弊肆数组
遍历数组中的所有元素是常用的一种 *** 作,在遍历的过程中可以完成查询或其他功能。在PHP中遍历数组的方法有多种,下面禅乱介绍最常用的两种方法。
<1>使用foreach结构遍历数组;
<2>使用list()函数遍历数组,list()函数仅能用于数字索引的数组,且数字索引从0开始。
例:综合使用list()和each()认证用户登录:
<?php
//输出用户登录信息
while(list($name,$value)=each($_POST)){
if($name!="submit"){
echo
"$name=$value<br>"
}
}
?>
七、统计数组元素个数
在PHP中,使用count()函数对数组中的元素租袭轿个数进行统计,语法为:int
coun(mixed
array[,int
mode]),其中参数array为必要参数,mode为可选参数,若选中COUNT——RECURSIVE(或1),本函数将递归地对数组数组。如,
<?php
$array
=
array("php"
=>
array("PHP函数参考大全","PHP程序开发范例宝典","PHP数据库系统开发完全手册"),
"asp"
=>
array("ASP经验技巧宝典")
)
//声明一个二维数组
echo
count($array,COUNT_RECURSIVE)//递归统计数组元素的个数,运行结果为6
?>
八、数组排序
<1>使用sort()和rsort()分别对数组进行升序和降序,如,
<?php
$array=array(5,26,37,18,9,42,88,66)
$array1=sort($array)
for($i=0$i<count($array)$i++){
echo
$array[$i]." "
}
echo
"<br>"
$array1=rsort($array)
for($i=0$i<count($array)$i++){
echo
$array[$i]." &nbsp"
}
?>
运行结果:
5
9
18
26
37
42
66
88
88
66
42
37
26
18
9
5
<2>使用ksort()和asort()对关联数组排序
如果使用了相关数组,在排序后还要保持关键字和值的排序一致,这是就需要使用ksort()和asort()函
数,如,
<?php
$array=array('php'=>1,'jsp'=>2,'asp'=>3)
ksort($array)
print_r($array)
echo
"<br>"
asort($array)
print_r($array)
?>
运行结果:
Array
(
[asp]
=>
3
[jsp]
=>
2
[php]
=>
1
)
Array
(
[php]
=>
1
[jsp]
=>
2
[asp]
=>
3
)
WASP(PHP网站程序结构) 是建立在PHP5上的第三方框架。最近很多软件开发工程师都从像JAVA 和C#企业级的语言转向了像 Python ,Ruby 和PHP的语言。随着PHP5的发布,PHP达到了开发者可以自由自在进行开发的水平,被认为是一种黑客语言(工作方式就像黑客工作一样自由)。通过证明,在PHP5环境中“企业-类”框架可以被创建并能在复杂环境中应用。WASP将帮助更多的开发者进行转变。WASP最卖腊初在"Three-Tier Development with PHP 5"这篇文章就被提及到。自从那时,它就开始不停地为改进以便在不同的PHP框架之间、传统的三层工具进行链接。薯配茄PangeMedia已经把它应用到许多的生产环境中去了。
这篇文章举例说明了如何去建立一个小型的数据库驱动程序一个简单的网站应用程序任务列表。 这个例子虽然短,但是去证数察实了WASP大部分强大的特征。
借着引入PEAR,php的程式开发者除了可以大幅缩减撰写程式码的工作与时间外,还可以用很简单的方式得到许多强大的动态网页功能,我将会列举许多的实例,让大家看了后,一定会啪掌叫好,并深深的迷上了PEAR。此外,程式码很容易维护,安全性高也是PEAR另2个很吸引人的优点,PAER程式库宛如模组,可以轻易的抽换与更新,完全不会影响到其他的程式码。
我们是从最基本的观念介绍起,包括PEAR这个专有名词的含意? 在那地方取得PEAR套件(package)? 如何使用PEAR套件等?
从第2章起,我们首先介绍PEAR的起源、历史与特色,让大家对PEAR有个基本的认识。
第3章我们将会介绍PEAR程式库套件的安装与管理方法,这一章是非常重要的,在使用PEAR之前,必需先把这些基本功夫学好,虽然有点复杂,但是学会之后受用无穷,让您的PHP程式开发效率倍增,功能随着递升。
第4章,是由简单的范例介绍如何引用PEAR程式库来开发PHP程序,让我们了解PEAR的一般使用方法,也为程式库的使用建立一个基本的 *** 作流程。
在第五章我们将介绍几个用法简单又功能强大的程式库套件的范例,让大家可以在动态网页上快速建立一些您以前无法想像而又非常酷的功能,让您的程式开发功力立刻提高。例如:
◆ 让网页可以提供天气预报的功能,增加网页的附加价值。
◆ 用很简单的方法在服务器上建立网页的快取(Cache),加快网页的开启速度。
◆ 在动态网页上搜寻某台主机有提供那些PORT号的服务。
◆ 在动态网页上查询某个网域昌没名称(DNS),找出相对应的IP。
◆ 动态产生HTML表格。
◆ 快速建立「客户回函」系统,让网页浏览者可以从网页上寄信给网站管理员。
◆ 让网页可以记录网页浏览者的行为,也就是做Log。
第6章到第13章,我们会很详细地介绍一些很重要,很常用,但较为复杂的程式库套件的使用方法,这几章都是以套件为介绍的主轴,也就是说,一章只介绍一个套件,务求将这几个重要套件中较为重要功能,详细地介绍给大家。
这些套件(packages)包括:资料库连线套件、表单制作套件、身份认证套件、档案上传套件、分页套件等等。
最后,附录A会对PEAR的网站做详细帆配的介绍,当您进入PEAR的世界后,您一定会经常来这个网站寻找资料。知道如何利用网站,对于那些PEAR的PHP开发者而言,是十分重要的。态迅指附录B则会对PHP的物件导向程式设计做简单的介绍。
喜欢和适合使用PEAR者分类如下:
◆ php爱好者,那一定要用PEAR,因为它绝对棒极了。
◆ PHP的专业程式设计员。您需要的是程式码的安全性,可重复性,以及良好的工作效率,PEAR绝对是必备的。
◆ PHP的程式玩家,想要开发更有趣的,功能更强的应用程式,却不想被撰写PHP程式的一些烦恼绑缠,PEAR绝对可以满足您的要求。
◆ 自己撰写PHP程式,却不喜欢每次都要从零开始,一字一字地敲打程式码,PEAR可以提高您的工作效率。
◆ 您想要学习功能性强,安全性高的PHP,当学会了PHP的基本语法后,可以试著使用PEAR。
◆ 您需要量身定造的PHP应用程式,换言之,您不喜欢像XOOPS之类的套装应用程式,来试试PEAR吧。
◆ 您需要容易维护的PHP应用程式,不想日后常修改程式码,或因为PHP的改版而将整个程式重新设计。
◆ 您希望您的PHP程式可以物件导向化,方便程式的抽换与模组化。
◆ 您希望您的PHP功力更上一层楼,想要学习更多的PHP相关知识,透过PEAR的使用或观看PEAR的原始码,不失为一个好的学习途径。
PEAR就是专门为有以上这些需求的人所写的.。
使用PEAR就像建一座房子一样。它是让您用预制件的方式,建一栋自己设计兼施工的大房子,但却不需要自己搅拌水泥,自己准备沙土、石头,自己烧磁砖.自己做铝门窗,自己做木工装饰等等...。
PEAR就像是已经针对您的需求所订制好并准备好的预制件,您只需要运用创意将他们组合起来就可以了。
我门在使用PEAR来编写PHP程式时,必需有一个先决条件,就是必需对PHP的相关知识有一定的认识。
若您不知道甚麼是PHP,什麼是Apache、Mysql,或者您虽然知道,却还不会PHP的基本语法,那麼,本文章目前并不适合您。建议您快去买些PHP、Apach、Mysql的入门书籍,详加研读后,才来看本文章。
大家并不一定要是PHP高手,但一定需要具备看懂基本PHP程序码的能力。无论如何,首先对PHP的热爱才是阅读本书最基本的先决条件。
第二章
PHP有许多的规范与语法,我们不做介绍,请大家有空去阅读有关PHP的书籍,我们重点介绍的是PHP发展到4.0版以后。加入了物件导向(Object-Oriented Programming Language)的功能,虽然还无法像了Java一样做到完全的物件导向,但比起前版本PHP3.0已经是一大进步,也对PHP的程序开发者提供了更强大与更方便的开发能力。
PHP 5.0版以上的版本,已经转变成为彻底的物件导向化,提供了更多完全物件导向功能。我们所介绍的PEAR程式库对PHP 4.3.0以上的版本是完全的支援。这一点请大家放心。
为了大多数人著想,也考虑到PHP向下的相容性,本书的内容与范例都可以在PHP 4.3.0版以上的环境中执行,因为PEAR完全支援PHP 4.3.0以上的版本,小于PHP 4.3.0版的环境,PEAR大部分也是支援的,只有小部分不支援。
什么是PHP的物件导向? 物件导向的语法在传统的PHP程式中较少看到,但若您了解JAVA这种程式语言的话,您应该可以知道什麼足物件导向,我会在附录B有针对物件导向做简单的说明。
另外,我要强调的是:PHP除了基本语法外,内建的函式就有超过上千个,横跨上百种类别,包括文字类函式、数字类函式、资料库类、图形类等等,功能相当强大,令人吒舌。但相对於程式开发者,如何善用这些函式,配合PHP的语法撰写有效又好管理的程式码,将会是一大挑战。
在今天,有PEAR这个由全世界众多顶尖的PHP高手所共同生产的智慧结晶,可以让我们轻松又有效率地撰写程式码,并克服许多撰写上的困难。以武侠界的例子来说,用PEAR撰写PHP就宛如数百位武林高手灌注他们的功力给程式开发者。让程式开发者不用从最基本的练功,扎马步练起,借用他们的功力就可以很轻松的让功力倍增,效率倍增。
说了半天,到底什麼是PEAR?下一个单元笔者就来做个介绍。
PEAR这个字单纯就字面上而言意思是「梨子」。
一颗梨子。网站的网址为http://pear.php.net
PEAR网站的logo中可以看到例子。
PEAR的开始是从1999年11月2l日。有一位名叫Stig S.Bakken的先生,这位仁兄发起了一个专案,并号召许多的PHP高手来共同投入,他首先为这个专案建立了一些程式码的基础规则,希望PHP的开发者加入这个专案时所撰写的PHP程式码都需要遵守这些规则。
这个专案名称就是PEAR,其实是PHP Extension and Application Repository的缩写,意即「PHP的延续与应用程式库」,简单的说,PEAR其实是一个PHP的程式库。
Bakken先生建立的程式码基础如下,我只概略说明一下,并不详谈细节的部分:
◆ 如果开发者要提供PHP程式库,程式的结构必须物件化。
◆ 程式的缩排要遵循一定的格式
◆ 程式中类别的命名也要遵循一定的格式
◆ 程式码的注解要有一定的格式
◆ 档案命名要有一定的格式
◆ 程式库撰写完成后要包装成套件,而套件的包装与安装方式,也有一定的格式。
该专案欢迎所有的PHP开发者来共同开发PHP程式库,只要他们愿意遵守上述的程式码基础规则。Bakken先生并组织了一组团队作为这个专案的控制主体,负责审核所有参与专案的开发者所提供的程式库,若通过审核,就将程式库分类并放入网站中供其他开发者下载使用,另外,这个团体也负责维护网站的维护与更新。
有些人可能会很好奇,为什麼有人会愿意免费撰写程式库让别人来使用呀? 这就是开放原码世界的精神一互助、共享。试想,若每个开发者针对自己专精的部分开发程式库给其他人使用,同时也享用别的开发者所释出的程式库,是不是可以达到互助的目的,让每一个开发者共享所有的开发者的成果.不必所有的程式码都要自己撰写。
更棒的是,这些程式库是免费开放给全世界的人使用的,不只参与程式库开发的开发者可以享用(这种作法与Java或perl提供函式库的作法是一样的)。
因此,全世界所有的PHP开发者可以省去许多撰写程式码的时间,又因为使用程式库的开发者可以回报程式库的缺失给原开发者,原开发者也因此会不断的修正这些程式库,所以程式码相对安全。另外,程式库开发者也会随着时代演进,加入新的功能到程式库中,让程式库的使用者可以与时俱进。
详细情况可参阅PEAR的网站中所提到关於开发PEAR的目的说明:http://pear.php.net/manual/en/about-pear.php。我建议您有时间慢慢地看吧,继续将本文章看下去,您就会慢慢了解PEAR的神奇之处了。
我在文章的最后有一章附录:PEAR网站的介绍,大家可以先参考一下。
如果您还不太了解我介绍所谓「程式库」的意思,没关系,下一节就会透过实际的例子加以说明。
2-3 所有套件简介
▓ 程式库VS套件
介绍所有套件之前,我们必须釐清两个名词,以免读者混淆了,一个就是「程式库」,另外一个就是「套件」。
假如我是是一个PHP的开发者,发展了一个可以处理所有资料库存取「程式库」,并想将这个程式库加入PEAR分享给全世界使用。当我撰写完理资料库的程式库后,我必须按照PEAR的规定,将程式库压缩成一个「件」档,放在PEAR网站供所有人下载,也由於遵循PEAR的规定来压缩档案,这个套件就可以用PEAR的套件管理指令来安装或管理,这对PEAR使用者而言是相当便利的,关於套件管理指令,我会在下一章做完整的说明经过上述的说明,相信读者应该了解何谓「程式库」、何谓「套件」?其实,简单的说,把程式库包装好就变成了套件。
▓ 套件与分类
PEAR截至目前为止释出的套件已高达三百多个,共分为35大类,而且不断增加中。大家可以想像全世界的顶尖PHP开发者的结合,是一股多大的团结力量。下图是网站中套件的分类:
PEAR因为释出的套件太多了,为了管理上的方便所以依套件的功能将套件做分类,同一类的套件在效果上都有相关性,但提供的功能却不尽相同小接下来,我将所有的分类用表格的方式做一个简单的介绍,让大家多了解一下PEAR套件可以提供哪些功能。
这麼多的分类,每一类都会依功能的不同发展出不同的套件。以第一个认证类为例,若您到网站去看,会发现目前该类中共有8个套件
这8个套件都是与身份认证有相关的套件,如果您想要网页具有身份认证功能,例如,可以让网页浏览者注册、输入帐号密码、判别身份、给予权限等等。就会需要用到这些套件。
我再补充一点:有些套件已发展成熟,开发者会将它称为稳定(stable)版,但若程式库尚在发展中,但也已经可以使用,开发者将它释出,通常会称为测试版(alpha or beta)版。网站也会记录套件的开发者与维护者的姓名,有时候一个套件是由许多人共同开发而成的。
这些套件的讯息都可在PEAR的网站中找到,我在附录〈PEAR网站的介绍〉会介绍如何使用PEAR网站。
2-4 使用PEAR程式库的简单范例
在这一节中,我用l个简单的范例来说明程式库的使用。
假设您想要制作一个网页,并且希望知道网页执行时所耗用的时间,则可以借用PEAR所释出的名为Benchmark的程式库。这个程式库开发出来的目的就是用来计算网页的执行时间。
首先,先将Benchmark程式库套件安装好(安装方法请参考下一章)。接著我们就可以开始撰写网页了,例如:我们建立了一个名为show.php的网页。
基於说明上的方便,我在每一行程式前面加上行号,大家实际上撰写程式时是不用加上行号的。
第1行与第2行的程式码首先引用Benchmark套件中的Timer.php网页,这个网页内含计算纲页执行时间的程式库。include_once可以将某一个外部的网页放到这个纲页来,我称这个动作叫做「引用」, 本例相当於执行了Timer.php与show.php两个网页。
第3行,用new关键字建立一个Benchmark_Timer物件,并将该物件放入名为$timer的变数中。接著使用细$timer物件的start( )方法启动时钟,然后加上我自己的程式码,此例中是一行简单的程式。
接著就是要结束时钟的计时,计算网页执行所花费的时间并将它显示出来。第8行先用$timer物件的stop( )方法来停止时钟,并用第9行$timer物件的timeElapsed( )方法计算时钟从启动到停止中间的时间差,并将计算结果放入$totaltime变数中。
最后用echo函式显示时间差在网页上。
由结果可清楚看到show.php网页从开始执行到执行完毕总共花了0.00013613700866699秒,以后可以借由观察这个数字来判断系统效能,或做为程式码改进的参考。如何,执行时间的计算是不是方便、快速又神奇呢!
如果您需要在其他网页上也可以有计算网页的执行时间的功能,只要用上述方式套用在其他PHP网页上就可以了。
事实上,其他套件的使用方式也跟这个套件的使用方式大同小异.差别只是在每个套件所提供的类别、方法以及使用的参数各有不同而已。
套件虽然好用,但相信读者还是有许多的疑惑? 例如:
1. Benchmark程式库套件是怎麼来的?要有哪些前置工作才可以使用它?
2. 我是如何知道使用Benchmark套件的方法?
第1个问题牵涉到如何安装PEAR套件,以及安装后套件的管理、升级、删除等问题,我会在第3章加以介绍。第2个问题,笔者会在第4章针对如何使用套件、如何得到套件的资讯等做一个详细的说明。
2-5 为何要用PEAR
为何要使用PEAR? 我根据自己的心得,归纳出以下几点:
1. 省时省力:许多程式码都被撰写在程式库中,开发者只需引用含程式库的PHP档,就可以拥有程式库所提供的功能,省去自行撰写的时间与精力。
2. 安全:由於这些程式库套件都将原始码公开,使用者若发现bug,可以立即向套件的开发者反映,开发者通常也会立即加以修正,让程式库的错误减到最小。
3. 容易维护:自行撰写的程式码与PEAR程式库的程式码分开,若PEAR套件因为有新功能被开发或修正错误而释出新版本,只需更新套件即可,完全不会动到自行撰写的程式码。
4. 功能强大:PEAR套件所提供的功能非常之多,除了一般常用功能如:资料库的连结、设定档的处理、身份的认证、以及表单的处理。另外,较为进阶的功能,例如像网路邮局、网路管理、动态方式产生图形、RSS、Wiki,或者像phpBB的BBCode解析等等都可简单做到。
5. 让网页的程式开发与版面设计分开:PEAR提供许多样板的程式库,可让程式开发与版面设计分开,方便於程式开发者与网页设计者分工合作。
6. 对学习PHP者是一套绝佳的学习范例:程式库的注解说明十分详细,程式码的撰写,具有一定的规则与格式,而且完全物质化,让开发者容易看懂并学习。有些套件还内附教学文件与范例挡,最重要的是:你不用花半毛钱就可得到,我们应该感谢套件的作者们,他们为我们付出了无私的贡献。
2-6 为什么要建立PEAR社团
是什麼原因促使全世界的PHP开发者大团结,共同开发出PEAR这个程式宝库呢? 我就认为有以下几个原因:
1.遭受其他竞争者的强大竞争:这一点第1章已经说明过了。
2.PHP的物质化:从PHP4加入物质导向的功能后,PHP5更是进一步物质化。除了要与ASP.NET、JSP一拼外,就是方便於程式的模组化,让程式库的开发可以进行,有了物质化的功能,程式库才可以与开发者自行撰写的程式码切割。
3.开发者的共同需求:如果每一次开发PHP程式,都要从无到有完全自己来,虽然可以锻鍊程式功力,但却没有效率,也不甚经济。若一些常用的功能可以用程式库的方式来处理,将可以解决许多开发者的困难。基於这种所有开发者都共同拥有的需求,让这些PHP的开发者分工合作,共同发展程式库,帮助自己也帮助别人。
2-7 PHP的竞争者与优缺点
PHP是在1994年发展出来的,经过四次主要的改写,成为我们今天所看到的可以广泛应用且成熟的产品。到2005年四月为止,PHP已经运用於全球超过1900万个网站上,而且这个数字还在持续快速成长中。
PHP与他们的竞争对手相比,他具有以下优势:
高效能:不是我黄婆卖瓜,哈哈。.., 我阅览过许多Asp.NET与Jsp的网页,效能上实在无法与PHP相比。(Asp.NET与Jsp的使用者应该不会看这篇文章吧)。
● 可以与许多不同的资料库系统相连结:其他的竞争者也可以,但没有PHP快。
● 易学易用:PHP的程式码的写法非常直觉,容易学习。
● 支援物件导向:这方面Jsp是强项,但PHP5已经追上来了。
● 低成本:根本不用钱。
● 内建非常多的函式库:记得笔者以前使用Asp,内建的函式库实在少的可怜。
● 开放原始码:安全性会比没有开放的高。
● PEAR程式库:这是最近的强力武器,用来与强敌们一争长短。
● 可携性:无论是各类Unix作业系统,如:Linux,FreeBSD,商业版Unix或Windows作业系统都可以使用PHP。
Asp.NET与Jsp当然也有他们独特的优点? 例如,Jsp夹带JAVA强大的功能,它就可以呈现一些目前PHP无法做到的效果。所以Jsp也吸引了许多的使用者,但笔者对Jsp目前的效能实在还不甚满意,相反地,对PHP的快速度满意的不得了。
使用哪一种程式,就由您自行做明确的抉择,不过,若您选择观看文章,相信我们应该都是同道中人,PHP的爱好者。
总而言之,许多PHP高手共同构筑了一个强大的支援网,若您是PHP的程式开发者,却对这些高手的好意毫不领情,那不是太可惜了吗?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)