项目三PHP中函数的学习PHP+MySQL开发项目教程课件.ppt





《项目三PHP中函数的学习PHP+MySQL开发项目教程课件.ppt》由会员分享,可在线阅读,更多相关《项目三PHP中函数的学习PHP+MySQL开发项目教程课件.ppt(97页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、项目三:PHP中函数的学习任务一:初步认识PHP中的函数任务描述:函数是PHP 最重要的组成部分。如果说前面介绍的变量、表达式、流程控制是PHP 的基础的话,那么可以说函数就是PHP 的主体。什么是函数呢?简单的说,函数就是为了完成特定功能而作为一个整体存在的代码块。PHP 中有大量的库函数,同时也允许用户自定义函数。下面就带领读者来认识一下函数。本节内容包括:什么是函数、函数的参数、函数的返回值、PHP 内部函数的使用、PHP 加载外部函数、如何自定义函数等。3.1.1什么是函数简单的说,函数是为了完成特定功能,而作为一个整体存在的代码块。例如,求绝对值函数abs()完成的功能是求一个数的绝
2、对值,而且它也是独立存在的,并不受其他变量或函数的影响。函数采用以下方法来定义。function f_name($arg)expr;return$retval;以上代码中f_name 为函数名,以名字来区别其他函数。$arg 为函数的参数,参数是在函数执行中要传递的值,它跟在函数后面的括号里。如果要求“-3”的绝对值就要用参数来传递“-3”,如abs(-3)。expr 为函数执行的语句,$revel 为函数的返回值,返回值并不是每个函数都有。返回值指完成函数后返回到主程序中的值。如abs(-3)的返回值为“-3”的绝对值“3”。其中函数名的命名规则与PHP 中的变量命名规则相同。有效的函数名以
3、字母或下划线打头,后面跟字母,数字或下划线。在PHP 3 中一个函数在调用之前必须已经被初始化。如果调用一个未被定义的函数,将会导致错误。从PHP 4 开始,就不再有这种限制,这意味着可以先调用一个并未被定义的函数,然后再去定义函数。但是如果函数的定义是有条件的,那么在这有条件的定义发生前,是不能被调用的。就像下面这两种情况。1有条件的定义具体内容请参看以下代码:例子3.1运行结果为:图3.1 定义函数图示以上为第1 种情况,虽然定义函数的条件为真,但是在有条件的定义前,函数是不能被调用的。即如果某条件为真则再去考虑是否去做某件事,如果这条件根本不存在,就不考虑去做这件事,更不用说怎么去做了。
4、这里举一个形象的例子。例如,一个家长叫小孩子去买东西。小孩子如何去买东西可以看作是一个函数。但是小孩也给家长提了条件,如果给1 元辛苦费才去买。即只有满足了给1 元钱的条件,才去执行买东西这个函数,也才去考虑怎么去买。如果条件根本不存在,那么函数就相当于没有定义,当然也不会执行了。例子3.3函数参数的使用实例?phpfunction B_I_text($text)/定义有参数函数echo.$text.;/打印字符并加入粗体斜体效果$string=PHP编程是一件很有趣的事情;/定义变量echo$string;/打印变量echo;B_I_text($string);/用实际参数调用函数?运行结果
5、图示:图3.2 函数参数的使用实例上例中,先定义了有形式参数的函数。然后定义变量,先显示变量,再通过实际参数调用函数。从这个例子中,读者可以了解到函数的参数是如何传递值到函数体的。在使用函数参数时还应该注意一个问题。函数的参数是有类型限制的,即某一函数的参数可能只对应某一种类型。如果参数的类型与函数要求的类型不一致,就会发生错误,可能会返回用户不希望的结果。如abs()函数的作用是计算一个数的绝对值,所以它的参数只能为整型或者浮点型数。如果用字符或者数组作为函数的参数,则一定会出现用户不希望的结果。另外,有的函数有默认的值的参数。这时的参数就变成了可选参数,即调用该函数时可以不加有默认值的参数
6、。函数将用默认值来替换该参数。下面举一个例子来说明:例子3.4函数有默认值参数的使用实例?phpfunction B_I_text($text,$color=#000000)/定义有参数函数,其中$color 参数有默认值echo;/使用颜色参数echo.$text.;/打印字符并加入粗体斜体效果echo;$string=PHP 编程是一件很简单的事情;/定义变量echo$string;/打印变量echo;B_I_text($string);/调用函数,无$color 参数Echo;B_i_text($string,red);/调用函数,加入$color 参数?运行结果:3.1.3函数的返回值
7、function f_name($arg)expr;return$retval;即以上代码中的$retval。函数通过return 来返回值。函数的返回值可以是数值、字符等变量。下面通过一个实例来说明函数的返回值是如何使用的。例子3.5函数返回值的使用实例保存以上代码,运行结果如图3.4保存以上代码,运行结果如图3.4 图3.4 函数返回值实例图片另外,函数不能有多个返回值,但是为了返回多个值,可以将数组作为一个函数的返回值,从而实现多个值的返回。下面通过一个实例来说明,函数是如何将一个数组作为其返回值的。3.1.4PHP内部函数PHP 为用户提供了丰富的库函数即内部函数,能否熟练的使用PHP
8、 的内部函数,是衡量一个PHP程序员合格与否的标准。那么如何使用PHP 中的库函数呢?由于内部函数是集成在PHP 解释器中的,所以它不用被定义,可以直接使用。使用时只是要注意函数的参数类型、调用方法、返回值及格式即可。相对于用户自定义函数来说,PHP 的内部函数使用更简单。一是因为它不用定义;二是不用担心函数体本身会出错。如果在使用库函数时返回了不希望出现的结果,那么不要怀疑是系统函数有问题。因为这些函数都是经过了反复的实践证明的,是绝对正确无误的。下面就通过例子,来说明在PHP 中如何使用库函数。调用常用的数学函数。例子3.7PHP 库函数的使用实例2运行结果图示3.1.5PHP加载外部函数
9、PHP 有很多库函数,还有一些函数需要和特定的PHP 扩展模块一起编译,否则在使用它们的时候就会得到一个致命的“未定义函数”错误。例如,要使用图像函数imagecreatetruecolor(),就需要在编译PHP 的时候加上对GD 库的支持。具体作法就是修改php.ini 文件。找到这一行:;extension=php_gd.dll把这一行行首的“;”去掉,这样PHP 解释器在启动时就会加载GD 库函数,然后就可以像使用内部库函数一样使用GD 库函数。对其他外部函数的使用也是如此,要使用相应的函数,就要先加载相应的模块。有很多核心函数已包含在每个版本的PHP 中,如字符串和变量函数等。调用P
10、hpinfo()函数,可以了解到PHP 加载了哪些扩展库。同时还应该注意,很多扩展库默认就是有效的。下面通过一个实例,来说明如何加载并使用外部函数。因为要使用GD 库函数,所以第1 步修改php.ini 文件,去掉“;extension=php_gd.dll”这一行行首的“;”。另外,在这个例子中要用到wingdings.ttf字体,所以要把wingdings.ttf 这个字体文件复制到PHP 文件的同一个目录下。该实例要实现的功能是创建一个图像文件,并在图像上画出一些图形。具体代码如下:例子3.8?phpHeader(Content-type:image/png);/输出一个PNG 图片文件
11、$im=imagecreate(440,100);/初始化图形区域$black=imagecolorallocate($im,0,0,0);/定义黑色$white=imagecolorallocate($im,255,255,255);/定义白色$yellow=imagecolorallocate($im,255,255,0);/定义黄色$blue=imagecolorallocate($im,0,0,255);/定义蓝色$red=imagecolorallocate($im,255,0,0);/定义红色$zi=imagecolorallocate($im,255,0,255);/定义紫色$c
12、olor=$blue;/定义$color 变量为蓝色$font=wingdings.ttf;/定义字体文件imagefilledrectangle($im,5,5,435,95,$color);/用蓝色画一个矩形imagestring($im,5,7,10,I:send,$white);/用白色写字符for($i=0;$i大家可以自己在PHP环境中运行,看一下效果。3.1.6自定义函数在实际进行PHP 编程时,由于要面对的情况可能十分复杂,仅仅依靠PHP 内置的库函数,有时往往不能实现用户所要达到的目的。这时就要用户自己构造函数来解决实际问题。PHP 允许用户使用自定义函数。那么,自定义函数应
13、该怎么用呢?这一节就来解决如何使用自定义函数及函数的动态调用、函数的递归等问题。图3.6 函数自定义图示可以看到在代码的第7行就是我们自己定义的函数,函数为求两个数的最小公倍数。通过上面的例子大家可以了解到在PHP中是如何自定义函数的,只要掌握了方法,自定义函数是非常简单的一件事情。2.使用自定义函数自定义函数在完成定义后,就可以使用了。使用的方法也相当简单,就像使用PHP 库函数一样。代码如下:function functionname();函数名后面加上括号,里面带上适当的参数就行了。以如何自定义函数中的例子说明,例子中在输出结果的时echo my_f()中的my_f()就是调用的代码第7
14、行中自定义的函数,同样的调用函数也是很简单,读者很容易掌握。3函数的动态调用由于PHP 支持可变化的函数概念。所以如果在一个变量的名称后面加上一对圆括号“()”,那么PHP 将去寻找与这个变量名字相同的函数。无论这个变量的数值是什么,函数都会被执行。这个过程就实现了函数的动态调用。为了形象说明函数的动态调用这个问题,下面通过实例来介绍。例子3.10函数的动态调用实例?phpfunction my_f_1($text)/定义函数1echo;/以12 号字体输出文字echo$text;echo;function my_f_2($text)/定义函数2echo;/以20 号字体输出文字echo;/给
15、文字加上下划线效果echo$text;echo;echo;$test=my_f_1;$test(I LIKE PHP!);/动态调用my_f_1()echo;$test=my_f_2;$test(用PHP 编程,其实很简单!);/动态调用my_f_2()?运行图示:图3.7 函数的动态调用图示以上代码先定义了两个函数,然后把函数名称赋值为变量。变量名后加上括号,PHP 就会去寻找同名的函数my_f_1,找到后则运行,从而实现了函数的动态调用。调用my_f_2 的过程与之类似。4.函数的递归这一小节来介绍PHP 函数的递归。那么什么是递归呢?其实递归就像读者都听过的一个歌谣那样:从前有座山,山里
16、有座庙,庙里有个老和尚和一个小和尚。老和尚给小和尚讲故事,故事里说从前有座山,山里有座庙就像这样无限循环。回过头来继续说递归,递归简单的说就是函数自身调用自身。有时通过函数的递归来处理问题是十分有效的。如求斐波纳契数列第N 项的值,如果采用传统方法效率很低。但如果使用函数的递归,解决起来就会容易的多。下面就通过例子来说明函数的递归问题。在列出具体代码前,先来了解一下斐波纳契数列的特点。斐波纳契数列即“兔子生兔子的问题”:有一个人把一对兔子放在四面封闭的地方。假定每个月一对兔子生下另外一对。而这新的一对在二个月后就生下另外一对。这样一年后他会有多少对兔子?这里对这个数列作一改动,设第一项与第二项
17、为1。结果就是像这样的一组数列:1,1,2,3,5,8,13,21,34,55,89,144即某一项为它前面两项之和。在了解了数列的特点后,下面就通过实际使用函数的递归,来解决这一问题。图3.8 函数递归图示以上代码中当参数为1 或2 的情况很容易理解,直接返回1 即可。除此以外的情况直接返回了和数组定义完全相同的公式:某一项为其前两项之和,从而实现了函数的递归。可以看出使用函数的递归解决此类问题相对于用迭代法来说是简单的、有效的。另外,在使用函数递归时要注意以下两个问题:在递归中要有使递归中止的代码,不能使递归陷入无限循环之中。同时要避免递归函数调用超过100200 层的范围,因为可能会破坏
18、堆栈从而使当前脚本终止。练习:1.函数的定义方法2.定义函数时包括几个部分3.自定义函数的方法任务二:了解PHP中常用函数任务描述:熟悉各种类型的函数,以方便与以后的调用数组函数字符串函数时间日期函数数学函数图像处理函数文件系统函数知识汇总:3.2.1数组函数数组函数概述数组是编程中的重要元素,在PHP中也不例外。在PHP语法部分已经介绍了数组的定义和使用,对数组有了一定了解。PHP中还为用户提供了一系列用来操作数组的函数,这些函数为标准函数,可以直接使用。下表列出了PHP5.1.6提供的数组函数。表3-1 PHP 5的数组操作函数函 数 名功 能array_change_key_case返回
19、字符串键名全为小写或大写的数组array_chunk将一个数组分割成多个array_combine创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值array_count_values统计数组中所有的值出现的次数array_fill用给定的值填充数组array_flip交换数组中的键和值array_keys 返回数组中所有的键名array_map将回调函数作用到给定数组的单元上array_merge_recursive递归地合并一个或多个数组array_merge合并一个或多个数组array_multisort对多个数组或多维数组进行排序array_pad用值将数组填补到指定长度a
20、rray_pop将数组最后一个单元弹出(出栈)array_product计算数组中所有值的乘积array_push 将一个或多个单元压入数组的末尾(入栈)array_rand 从数组中随机取出一个或多个单元array_reverse返回一个单元顺序相反的数组array_shift将数组开头的单元移出数组array_slice 从数组中取出一段array_splice 把数组中的一部分去掉并用其他值取代array_sum计算数组中所有值的和array_unique移除数组中重复的值array_unshift在数组开头插入一个或多个单元array_values返回数组中所有的值array_walk
21、_recursive对数组中的每个成员递归地应用用户函数array_walk 对数组中的每个成员应用用户函数array新建一个数组arsort对数组进行逆向排序并保持索引关系asort对数组进行排序并保持索引关系compact建立一个数组,包括变量名和它们的值count计算数组中的单元数目或对象中的属性个数current返回数组中的当前单元each返回数组中当前的键/值对并将数组指针向前移动一步end将数组的内部指针指向最后一个单元extract从数组中将变量导入到当前的符号表in_array检查数组中是否存在某个值key从关联数组中取得键名krsort对数组按照键名逆向排序ksort对数组按
22、照键名排序list把数组中的值赋给一些变量natcasesort 用“自然排序”算法对数组进行不区分大小写字母的排序natsort用“自然排序”算法对数组排序next将数组中的内部指针向前移动一位prev将数组的内部指针倒退一位range建立一个包含指定范围单元的数组reset将数组的内部指针指向第一个单元rsort对数组逆向排序shuffle将数组打乱sizeofcount()的别名sort对数组排序uasort使用用户自定义的比较函数对数组中的值进行排序并保持索引关联uksort使用用户自定义的比较函数对数组中的键名进行排序usort使用用户自定义的比较函数对数组中的值进行排序例子3.12
23、array函数的使用0,b=1,c=2,d=3,e=4);echo$arr10=.$arr10;echo;echo$arr2a=.$arr2a;?运行结果图示:图3.9 array函数使用图示首先用array()函数定义了拥有5个元素的数组$arr1,并且每个元素分别赋值0,1,2,3,4。然后定义了同样5个元素的数组$arr2,并分别赋值0,1,2,3,4。两个数组的不同是第一个数组用了默认的数字作为下标,第二个数组用了自定义的字符作为下标。因此最后输出数组元素时也使用了各自对应的下标。2.count()函数count()函数可以用来统计一个数组中元素的个数,在循环遍历一个未知长度的数组时非
24、常有用。看下面的例子。例子3.13Count函数的使用程序运行后将输出:“数组$arr1中元素个数为:5”。例子3.15each函数的使用Bob,age=20,sex=male,postcode=100000);While($kav=each($arr)echo$kavkey.=.$kavvalue;echo;?大家可以看到上面的例子比用count()函数更加简洁,但实现的效果却是一样的。上面的这段代码利用了each()函数一个重要性质,那就是当数组已经到达末尾时each()函数返回false。通过前面所学的知识,读者知道false是一个布尔值,表示“否”。因此它正好可以作为while循环的结
25、束条件。这样,可以用一个while循环来每次读取$arr数组中的一个元素,不管数组有多少个元素,当指针到达末尾时,each($arr)返回false,循环结束,程序执行完成。同样实现了动态输出未知长度的数组的功能。在这里,大家可以看到有时候实现同一个功能,可以选择多种途径。作为程序开发人员,应该尽量选择更加简洁、高效的途径。4current()、reset()、end()、next()和prev()函数之所以要将这5个函数并列起来介绍,是因为这5个函数的作用相似它们都用来操作数组内部的指针。在PHP中,使用一个内部指针来指向一个数组。需要访问数组中的某一元素时,只需要将指针移动到该元素的位置,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目 PHP 函数 学习 MySQL 开发 教程 课件

限制150内