资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,Click to edit Master title style,Click to edit Master text styles,第,8,章 数据的处理,数据处理在,PHP,编程过程中有着重要的地位,因为各种操作说到底还是对数据的操作。例如,需要入库的各种用户信息、需要进行比较的日期时间、需要计算的数值等等。而在,PHP,的系统函数中分别定义了专门的函数类别用于处理不同的数据,如数学类函数、字符串类函数、数组类函数、日期时间类等。本章就来介绍,如何使用这些不同的系统函数对数据进行处理。,在本章中,将重点学习以下内容:,操作数值,操作字符串,操作数组,操作日期时间,8.1,操作数值,数值操作的应用范围比较广泛,特别是制作专业性较强的,Web,应用程序,如计算员工平均工资、执行各种复杂的数据基础绘图、进行各种不同进制的转换等。,PHP,系统函数中提供了,math,类函数专门用于处理各种数值操作,本节就来介绍各种数值的常见操作。,8.1.1,求绝对值,PHP,中提供了用于求绝对值的函数,abs(),,使用该函数可以求一个数的绝对值。该函数的语法格式如以下代码所示:,number abs(mixed$number),该函数的参数,$number,为指定的数值,既可以是整型数也可以是浮点数。函数将会根据求绝对值规则返回指定数的绝对值。如果参数,number,是,float,,则返回的类型也是,float,,否则返回,integer,。,8.1.1,求绝对值,8.1.2,小数取整,在实际操作时,经常遇到需要将小数转变为整数的情况。,PHP,中提供了多种“小数取整”的方法。分别通过不同的函数来实现,本小节来介绍各种小数取整的方法。,1,进一法取整,2,舍去法取整,3,四舍五入法取整,8.1.3,角度与弧度转化,角度与弧度转化是常用的数学操作之一。因为通常人们所使用的类型是角度,而一些三角函数却需要使用弧度来作为参数,所以需要进行角度与弧度的转化。,PHP,中就专门提供了一类函数来执行角度与弧度的转化操作。,1,角度转化为弧度,2,弧度转化为角度,8.1.3,角度与弧度转化,8.1.4,次方与平方根,求次方与求平方根,也有着广泛的用途,,PHP,中也提供了实现这两项功能的函数。,1,求次方,2,求平方根,8.1.5,求三角值,三角类函数通常包括:正弦、余弦、正切、余切、正割、余割以及反正弦、反余弦、反正切、反余切、反正割、反余割等。,PHP,中提供了与这些数学表述几乎一致的函数。,8.1.6,求最值,求一组数中的最大值或者最小值也是比较常用的操作之一。如求一个班级中的英语考试最高成绩、又比如评委评分时需要去掉的最低分等。,PHP,中也提供了求最大值与最小值的函数。,1,求最大值函数,2,求最小值函数,8.1.5,求三角值,8.1.7,求随机数,随机数在,Web,应用程序也有应用的舞台,最常见的就是输入一个随机的验证码。,PHP,中的随机数处理函数,也提供了获取随机数的功能。使用随机数函数,rand(),即可实现这样的效果,该函数的语法格式如以下代码所示。,int rand(int min,int max),该函数有两个可选参数:,min,与,max,都为数值型,函数将会返回,min,与,max,之间的一个随机数值。如果不带这两个参数,函数将返回,0,到系统支持最大数值之间的一个伪随机数。,注意,rand(min,max),返回的随机数,包含,min,与,max,即随机数也可能是最小值或者最大值。,8.1.7,求随机数,8.1.8,进制转换,进制的概念在每种编程语言中都有涉及。十进制是人们日常处理数值时所使用的进制,这种进制最为人们熟悉与理解,除此之外还有二进制、八进制与十六进制等。这些进制通常用于计算机语言直接处理数据。所以数值在不同进制之间的转换就成为数据操作的一个重要内容。本小节来介绍在,PHP,中如何实现进制的转换操作。,1,十进制与二进制转换,2,十进制与八进制转换,3,十进制与十六进制转换,4,任意进制之间的转换,8.1.8,进制转换,8.1.9,其他数值处理函数,前面,8,小节介绍了几种常用的数值处理函数,除了这些函数之外,,PHP,数学函数中还包括其他几个不太常用的数值处理函数,在这里作下简要的介绍。,1,计算,e,的指数,2,求余数函数,3,计算直角三角形斜边长,4,以,10,为底的对数,5,自然对数,6,获取圆周率,8.2,操作字符串,字符串在数据操作中也占有相当大的比重,因为很多的数据是以字符串来作为载体的。比如:注册用户的用户名、密码、联系方式、地址等等。所有这些内容都需要使用字符串来对其进行操作。针对这种情况,,PHP,中也提供了大量的字符串操作函数用于处理字符串,本节分别来为读者介绍。,8.2.1,字符串输出,字符串的输出操作是所有字符串操作中最为基本的一类操作,,PHP,中提供了很多用于实现字符串输出的函数(或者语句)本小节就先来介绍字符串的输出操作。,1,最常见的输出:,echo,2,print,输出函数,3,格式化输出字符串,8.2.2,字符串长度,求字符串长度是使用字符串的基础。,PHP,中提供了用于获取字符串长度的函数:,strlen(),,该函数的语法格式如下所示:,int strlen(string$string),以上代码中,参数,$string,是需要获取长度的字符串,执行该函数将以数值形式返回指定的字符串的长度。,8.2.3,字符串截取,字符串截取操作,是最常用到的字符串操作之一,,PHP,中也提供了用于实现字符串截取的功能。通过函数:,substr(),即可实现字符串截取操作,该函数的语法格式如以下代码所示:,string substr(string$string,int$start,int$length),以上代码中,$string,为指定的需要进行截取操作的字符串,参数,$start,为进行截取所开始的位置,以数值表示;可选参数,$length,为指定的截取的长度也以数值表示,如果省略该参数则从指定位置截到最后。执行该函数将按照指定的位置及长度返回一个新的字符串。,需要注意的是,如果参数,$start,为负数则从倒数第几个位置开始截取;如果参数,$length,为负数则为字符串末尾需要保留的长度。,8.2.3,字符串截取,8.2.4,字符串替换,字符串替换操作是最常用的字符串操作之一,在实际编程过程中,出于某种特殊要求,需要将字符串中的某些字符替换为其他字符。如用户互动程序中对用户输入的内容中的敏感或者违法内容进行过滤。,PHP,中提供了两个用于实现字符串替换功能的函数,下面分别为读者介绍。,1,转换字符串中的某些字符,2,将字符串中一部分替换为另一字符串,3,将字符串中所有指定字符进行转换,8.2.4,字符串替换,8.2.5,字符串分割,使用,PHP,的字符串分割函数:,explode(),可以将字符串按照指定规则分割为几个字符串,结果以数组的形式出现。该函数的语法格式如以下代码所示:,array explode(string$separator,string$string,int$limit),该函数有两个必选参数与一个可选参数:参数,$separator,为执行分割操作的字符串的一个子串或者叫分割标记;参数,$string,为目标字符串;可选参数指定最多返回的数组元素个数。执行函数将把字符串按照分割标记分割为数组。,8.2.5,字符串分割,8.2.6,字符串的比较,在,PHP,中,不仅数值、数组可以比较大小字符串也有大小的区分。比较字符串的大小需要使用专门的字符串比较函数来实现。,1,不区分大小写比较,2,区分大小写比较,8.2.7,字符串的大小写,对英文字符串进行操作时,大小写的转换问题就成为字符串操作的重要内容之一。,PHP,中也为字符串的大小写转换提供了一组系统函数。本小节就来分别介绍这些大小写转换类函数。,1,将字符串中所有内容转换为大写,string strtoupper(string$str),2,将字符串中所有内容转换为小写,string strtolower(string$str),3,将字符串的首字母转换为大写,string ucfirst(string$str),4,将字符串的每个单词的首字母转换为大写,string ucwords(string$str),8.2.7,字符串的大小写,8.2.8,字符串与,ASCII,码,在实际编程的过程中有时也需要将字符转换为,ASCII,码,或者反过来将,ASCII,码转化为其对应的字符。在,PHP,的字符串操作类函数中也提供了将字符与其对应的,ASCII,码进行转换的函数。本小节来介绍这样的函数。,1,将字符转换为,ASCII,码,2,返回,ASCII,码所对应的字符,8.2.8,字符串与,ASCII,码,8.2.9,转换,HTML,特殊字符,在用户互动程序中,需要对用户的输入内容进行过滤。因为如果用户输入内容中含有,HTML,特殊字符将会对程序的运行带来一定的影响,甚至于别有用心的用户可以在,HTML,代码中混合,JavaScript,代码可以造用用户秘密的丢失。而在,PHP,字符串有专门用处理于含有,HTML,特殊字符的函数。本节就这些函数为读者作介绍。,1,使用,htmlentities(),进行转换,2,使用,htmlspecialchars(),8.2.9,转换,HTML,特殊字符,8.2.10,字符串查找,在,PHP,中还可以执行字符串查找操作,即在一个字符串中查找另一个字符串出现的位置。支持该操作的函数为:,strpos(),,该函数的语法格式如以下代码所示。,int strpos(string$haystack,mixed$needle,int$offset),以上代码中参数,$haystack,为需要进行查找的字符串,以一个字符串型变量表示;参数,$needle,为查找的目标字符串;,$offset,为可选参数,该函数指定开始查找的偏移量,其默认值为,0,。该函数将返回第一个找到的位置,如果找不到,函数将会返回,FALSE,。,8.2.10,字符串查找,8.2.11,其他字符串处理函数,除了前面几小节所介绍的字符串处理函数,,PHP,中还有一些其他不太常用的字符串操作函数。本节分别将这些函数为读者作简要介绍。,1,返回字符串中所用字符的信息,2,将字符串使用,MD5,加密,3,翻转字符串,4,重复字符串,8.3,操作数组,前面两节分别为读者介绍了数值的处理与字符串的处理,而作为一种普通变量的集合,数组也有着非常广泛的用途。这一节就来介绍在,PHP,中常用的数组操作的内容。,PHP,的系统函数专门提供了一类对数组进行操作的函数,通过这些函数可以对数组进行各种需要的操作,本节将逐一作介绍。,8.3.1,建立数组,建立数组应该是所有使用数组操作的基础,要使用一个数组首先就要创建数组。在,PHP,中创建数组所要使用到的函数就是:,array(),,该函数语法格式如以下代码所示:,array arrat(mixed$con),以上代码中参数,$con,即为创建数组所需要的内容,可以为多种形式。既可以是单个值来表示数组的值,也可以是以,=,操作符连接的键值对。函数将会根据相应的参数返回数组。,8.3.2,数组长度,与字符串一样,数组也是有长度的概念的,数组的长度通常指数组所包含有元素的个数。使用,PHP,系统函数中的,count(),函数,可以获取数组的长度。该函数的语法格式如以下代码所示:,int count(mixed$var,int$mode),8.3.3,检查数组中值出现次数,因为数组是一个变量的集合,一个值在数组中可能会出现多次,所以检查数组中每个值的出现次数也成为使用数组的一个重要操作。使用,PHP,数组函数,array_count_values(),即可返回由数组的值及其出现次数所生成的数组。该代码的语法格式如下所示。,array array_count_values(array$input),以上代码中参数,$input,为指定的需要进行统计的数组的名称,函数将会把数组中值出现的次数以数组的形式返回。,8.3.3,检查数组中值出现次数,8.3.4,数组排序,数组的排序操作在数组操作中也占用重要的地位,常规的编程语言需要用户使用自定义的冒泡排序法及其类似的方法实现排序,而在,PHP,中则提供了一组用于执行数组排序的系统函数。本小节就分别来介绍这些数组排序函数。,1,使用,arsort(),函数排序,2,使用,asort(),进行排序,3,使用,krsort(),函数排序,4,使用,ksort(),进行排序,5,使用,rsort(),函数排序,6,使用,sort(),进行排序,7,使用,uasort(),函数排序,8.3.4,数组排序,8.3.5,移动数组指针,在,PHP,的数组中有指针的概念,数组的指针即当前数组所指向的值。,PHP,提供了用于返回和移动数组指针的函数,使用该函数函数可以实现数组指针的移动与返回当前指针等操作。该类函数共有以下几个:,current(),函数,返回数组当前指针所指向的值,初始的数组指向第一个值;,each(),函数,返回数组当前指针所指向的键值对,并将指针后移一位(常用于遍历数组);,end(),函数,将数组指针移动到最后一位;,next(),函数,将数组指针后移一位;,prev(),函数,将数组指针前移一位;,reset(),函数,重置数组,即将数组指针移到第一位。,8.3.5,移动数组指针,8.3.6,移除重复的值,在操作数组的时候,出于某种要求,需要将数组中重复的值进行移除。如果采用自定义的函数就需要遍历函数,并找出重复的值,再将重复的值进行删除。而在,PHP,中则预定义了这样功能的系统函数:,array_unique(),,该函数的语法格式如下所示:,array array_unique(array$array),以上代码中,参数,$array,为一个指定的数组。该函数将会对数组进行分析,移除数组中的重复的值,并返回一个没有重复值的新的数组。,8.3.6,移除重复的值,8.3.7,合并数组,PHP,支持对数组的合并操作,共有三种方法实现不同类型的数组合并。本小节就分别来介绍这些数组合并的方法。,1,最简单的数组合并方法,2,使用,array_merge(),函数合并数组,3,使用,array_merge_recursive(),函数递归合并数组,8.3.7,合并数组,8.3.8,检查数组中是否存在某个值,在进行数组处理需要判断数组中是否包含某一个值时可以使用,PHP,中的数组函数:,in_array(),。该函数的作用就是检查数组中是否存在某个值,其语法格式如以下代码所示:,bool in_array(mixed$needle,array$haystack,bool$strict),以上代码中参数,$needle,为需要查找的值,可以是多种类型;参数,$haystack,为进行查找的目标数组;可选参数,$strict,为布尔值,指定在进行检查时是否也指定类型检查,默认值为,FALSE,即不进行类型检查。,8.3.8,检查数组中是否存在某个值,8.3.9,其他数组处理函数,前面各小节为读者介绍了,PHP,中常用的数组处理函数。除了这些函数之外,,PHP,中还有一些其他的数组处理函数,本小节就选取其中有代表性的函数为读者作简单要介绍。,1,计算数组的交集,2,检查数组是否有某个键名,3,返回数组键名,4,计算数组所有值的和,5,返回数组所有值,8.4,操作日期时间,日期时间的操作在,PHP,编程中也占有一席之地,比较常用的如:获取当前时间、获取微秒数等等。本节来介绍一下在,PHP,中的日期与时间的操作。,8.4.1,使用前的准备,由于在,PHP5,新增加了时区选项这一设置,其默认值为格林威治时间。而中国大部分所在时区为东八区,如果采用默认设置则使用的时间函数所获取的结果就会比真实时间晚,8,个小时。所以在使用所有的日期时间函数进行相关操作之前需要先对该选项进行设置。其设置方法如下:,(,1,)打开,PHP,的配置文件,php.ini,。,(,2,)查找,date.timezone,选项并去掉行首的分号。,(,3,)在“”号后面加,Asia/Shanghai,,保存,php.ini,配置文件。,(,4,)重启,Apache,服务即可。,经过上述修改,使用日期时间函数即可获取到正确的值。,8.4.2,格式化日期时间,使用,PHP,中的,date(),函数,可以格式化一个本地时间或者日期。该函数是最常用的日期时间函数之一,其语法格式如以下代码所示。,string date(string format,int timestamp),以上代码中参数,format,为指定需要返回的日期时间的格式,以字符串表示,可选参数,timestamp,为一个时间戳记,以数值表示,其默认值为当前时间戳记。执行该函数会返回将整数,timestamp,按照给定的格式字串而产生的表示日期时间的字符串,如果没有给出时间戳则使用本地当前时间。,8.4.2,格式化日期时间,8.4.3,取得日期时间信息,使用,PHP,中的,getdate(),函数将会取得日期时间的相关信息。该函数的语法格式如下所示:,array getdate(int$timestamp),该函数有一个可选参数,$timestamp,,该参数为一个日期时间戳记,如果省略该参数,默认将使用当前时间。执行函数将返回一个包含指定日期相关信息的关联数组。,8.4.4,返回当前,Unix,时间戳记,使用,time(),函数可以获取当前的,Unix,时间戳记。该函数多用于先求得当前时间戳记,然后再把相应的结果应用于如,date(),或者,getdate(),函数中。该函数不需要参数,执行函数将返回自从,Unix,纪元(格林威治时间,1970,年,1,月,1,日,00:00:00,)到当前时间的秒数。,8.4.5,将英文文本的日期时间描述解析为,Unix,时间戳,函数,strtotime(),可以将使用英文描述的日期时间解析为,Unix,时间戳记,该函数语法格式如下所示:,int strtotime(string$time,int$now),以上代码中参数,$time,为被解析的字符串,格式根据,GNU,(革奴)日期输入格式的语法。可选参数,$now,是用来计算返回值的时间戳。执行函数将会返回指定的时间戳记。,8.5,数据处理实例,数据处理在,PHP,编程中占有很重要的位置,同样在一些,PHP,面试中经常会涉及到数据处理的相关内容。本节就找其中较有代表性的几个题目给大家一些解决方案,使读者有所启发,再碰到同样的题目时即可迎刃而解。,8.5.1,处理数值,【,范例,8-50】,题目:在不使用第三个变量的情况下,交换两个数值型变量的值。,通常的交换数值操作是非常简单的,比如下面的代码:,$c=$a;,$a=$b;,$b=$c;,经过上面的操作即可实现,$a,与,$b,内容的交换。但现在题目要求在仅有两个变量的情况下进行交换,而,PHP,又不像,VB,直接有可以实现两数交换的函数,所以就需要动一点脑筋了。,8.5.2,处理字符串,【,范例,8-51】,题目:编写一个函数,实现字符串的翻转,不能使用系统函数,strrev(),。如输入“,abc”,返回“,cba”,。,前面介绍过字符串处理函数,strrev(),即可实现字符串的翻转。那么要编写自定义函数实现该功能应该如何组织代码?这里可以通过字符串截取函数,substr(),来实现。,8.5.3,处理数组,【,范例,8-52】,题目:实现数组由小到大的排序,不允许使用所有系统函数中的数组排序函数。,在,8.3.4,小节中介绍了多种数组排序的函数,使用这些函数可以按照指定的规则对数组排序。然而该题目又要求不能使用系统函数来实现,这里就采用最经典的冒泡法进行排序操作。该算法使用二重循环,对两个数进行比较由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。,8.5.4,处理日期时间,【,范例,8-53】,题目:打印出前一天的日期。,如果这个题要自己写函数来实现,会很麻烦。如果在同一月中,很察易实现,只需要将日期减,1,即可。但在每月甚至每年第一天,则需要月或者年也要变化。判断起来相当麻烦。好在,PHP,中提供了方便的函数来实现这一功能。其实这道面试题的根本就在于测试面试人员对,PHP,日期函数的掌握。,使用,date(),函数配合,strtotime(),函数只需要一句代码即可实现所要求的功能:,8.6,本章小结,本章为读者介绍了,PHP,中的数据处理方面的系统函数,包括:数值操作、字符串操作、数组操作以及日期时间操作等内容。熟练掌握这些数据的操作是进行,PHP,编程的基础,特别是其中经常使用到的函数更是要掌握函数的细节要求,对于不经常使用的函数简单了解一下其功能,在用到时再查相关资料即可。下一章将为读者介绍,PHP,中的数据库处理。,演讲完毕,谢谢观看!,
展开阅读全文