




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第8章 PHP的函数,PHP提供了两种类型的函数,一种是用户自定义函数,完全由用户自己定义,通过讲解用户自定义函数,掌握函数的工作流程、函数的返回值、函数的作用域以及函数的两种值传递方式,并对递归函数做举例说明;一种是内置库函数,内置库函数是PHP中已经预定义的函数,并且它的运行方式在创建时就已预定义。,【例8-1】用户自定义函数与函数值的返回,1)函数声明的语法结构: function 函数名(参数列表) 函数体; return 返回值; 其中: 函数名:是希望创建的函数名,以后要引用或者调用该函数就必须使用这个函数名,函数名必须是唯一的。函数名的命名规则与变量的命名规则一样,但切记:函数名
2、前面不加$符号,这是与变量的不同之处。 参数列表:函数名后必须有一个括号,里面包括的内容称为参数或者参数列表,允许参数为空,或者只有一个参数,或者有多个参数。,【例8-1】用户自定义函数与函数值的返回,函数体:函数独立完成某一特定任务的一组语句,如果有两个或者多个语句,代码必须放在大括号内部(),但是,如果函数的代码部分只包含有一个语句,则可以不使用大括号。 return返回值:返回值不是每个函数都必须有的,这和函数的功能以及用户的需求与自定义有关。返回值指完成函数后返回到主程序中的值。函数的返回值可以是数值、字符等变量。返回值不能有多个返回值,但是如果要返回多个值,则可以将数组作为一个函数的
3、返回值。 在PHP 5后,允许将函数定义语句放在函数调用语句之后,即可以先调用一个未被定义的函数,然后再去定义函数。但是如果函数的定义是有条件的,那么在有条件的定义发生前函数是不能被调用的。,【例8-1】用户自定义函数与函数值的返回,(2)函数的工作流程为: 1)定义一个函数。 2)主程序调用函数,传过去值或者空。 3)函数接收值,并进行处理。 4)返回结果到主程序,并把控制返回到调用它的脚本。,【例8-2】函数的作用域,作用范围只在函数内,在函数外的任何地方都不能使用在函数内部声明的变量,这就叫做函数内部的局部变量。 global语句允许从脚本的任何位置访问函数内部定义的变量,因此,在声明变
4、量的时候,前面必须加上global语句,语法如下: global $变量名1,$变量名2; 而加上global的变量也可以简单地称之为全局变量 注意:static变量和global变量有很大的差别。global变量可以从整个程序的任何位置访问。而static变量仍然是函数内部的局部变量,与普通变量不同的是,一旦函数的执行结束后,这种变量不会丢失自己最后的值。,【例8-3】函数的参数传递,函数传递参数的三种方式,一种是传递默认参数值,一种是用值传递参数,一种是按引用传递参数。 第一种:传递默认参数值。 要使用这种方法,函数必须在定义时有一个默认参数,在主程序中对该函数进行调用时,若实参为空,则自
5、动调用默认参数。如本例中定义的函数: function cube($value=8) /立方体体积函数定义 $value=$value+1; return $value*$value*$value; /返回体积值 给定了一个默认值$value为8,所以当主程序中出现没有参数的调用: echo cube(); /传递默认的参数值 函数自动按照默认值8+1来计算立方体的体积,结果为9*9*9,等于729。,【例8-3】函数的参数传递,第二种:用值传递参数。 要使用这个方法,必须在主程序中调用函数时传递一个值(或者参数)给函数。如: echo cube(6); /用值传递参数 传递一个数值6给cub
6、e()函数中的$value,然后$value+1,结果为7*7*7,等于343。 又如: $side=12; echo cube($side); echo ; echo $side; 在主程序中定义了一个变量$side,为其赋值12,然后传给函数cube()的$value,然后$value+1,结果为13*13*13,等于2197,回到主程序,再输出$side时,我们会发现,结果仍然为12,$side的值没有变化。这里参数传递的只是一个副本,并没有涉及到存储地址内容的变化。,【例8-3】函数的参数传递,第三种:按引用传递参数。 在按值传递参数时,只有参数的副本传递给被调用的函数,在被调用函数内
7、部对这些值的任何修改都不会影响到主程序函数中的实参。但如果采取按引用传递参数,就可以直接修改存储地址的内容了。如: echo cube(,【例8-4】函数的递归,像本例中的阶乘计算,若编写如下的代码: $sum=$n*($n-1)*($n-2)*1 那么当这个n数据比较大的时候就会发现,这个$sum的计算将是一个非常长的计算过程,计算过程完全没有效率可言,更不用说要求多个数的阶乘了。 通过本例的函数递归操作可以看到,5、15、25阶乘只需要调用jieche()函数即可,过程简单,有效地去除了程序的冗余。 注意: (1)在递归中要有使递归中止的代码,不能使递归陷入无限循环之中。 (2)要避,【例
8、8-5】PHP内置库函数之数学函数,一般的计算可以通过运算符解决,如加、减、乘、除等。使用 PHP 的数学计算内部函数,可以帮助我们解决一些比较复杂的计算。 round:对浮点数进行四舍五入。 round 函数的语法如下: round(float,precision) 其中,参数 precision 表示小数点后面要保持的精度位数。如果不写参数 precision,表示四舍五入到整数位,比如: echo round(3.4);/ 3 echo round(3.5); / 4 echo round(3.6); / 4,【例8-5】PHP内置库函数之数学函数,floor:舍去法求整。 floor
9、函数的语法如下: floor (value) floor 函数返回不大于 value 的最大整数,即将 value 的小数部分舍去取整。示例如下: echo floor(4); /4 echo floor(4.3); / 4 echo floor(9.999); / 9 ceil:进一法取整。 ceil 函数的语法如下: ceil (value) ceil 函数返回不小于 value 的最小整数。示例如下: echo ceil(4); /4 echo ceil(4.3); / 5 echo ceil(9.999); / 10,【例8-5】PHP内置库函数之数学函数,pow:求幂。 pow 函数
10、的语法如下: pow (base,exp) pow 函数返回 base 的 exp 次方的幂。下面的示例表示求 2 的8 次方,返回结果是256。 echo pow(2, 8); / 256 rand:产生一个随机整数。 rand 函数的语法如下: rand (min,max) rand 函数返回一个介于最小值 min 和最大值 max 之间(包括min、max)的随机整数。比如下面的示例返回一个 26 之间的随机整数。 echo rand(2,6);,【例8-5】PHP内置库函数之数学函数,max:返回参数中数值最大的值。 如果 max 函数只有一个参数且为数组,max 返回该数组中最大的值
11、。 echo max(1, 3, 5, 6, 7); / 7 echo max(array(2, 4, 5); / 5 min:返回参数中的最小值。 如果 min 函数只有一个参数且为数组,min 返回该数组中最小的值。 echo min(1, 3, 5, 6, 7); / 1 echo min(array(2, 4, 5); / 2 decbin:十进制转换为二进制。 decbin 函数的语法如下: decbin (number) decbin 返回一个字符串,即返回参数 number 的二进制表示。 echo decbin(12);/1100 bindec:二进制转换成十进制。 binde
12、c 函数的语法如下: bindec (binary_string) bindec 函数将二进制字符串 binary_string 转换成一个十进制整数。示例如下: echo bindec(110011); /51,【例8-5】PHP内置库函数之数学函数,hexdec:十六进制转换为十进制。 dechex:十进制转换为十六进制。 dechex和hexdec 函数示例如下: echo dechex(47); /2f echo hexdec(2f); /47 decoct:十进制转换为八进制。 octdec:八进制转换为十进制。 echo decoct(12); /14 echo octdec(14
13、); /12,【例8-6】PHP内置库函数之字符串函数,strlen strlen 函数能得到一个字符串的长度。下面的示例中,得到的变量 $a 的长度为 8。 $a = bcdef; echo strlen($a); /8 trim trim 函数的功能是将字符串两边的空格都去掉。比如下面示例中变量 $a 的值是 “abcdef”,字符串两边各有一个空格,trim 之后,由于去掉字符串两边的两个空格,字符串的长度就是6。 $a = abcdef ; echo strlen(trim($a); /6,【例8-6】PHP内置库函数之字符串函数,ltrim ltrim 函数的功能是将字符串左边的空格
14、去掉。 echo nice, try; /nice try echo nice,ltrim( try); /nicetry rtrim rtrim 函数的功能是将字符串右边的空格去掉。 echo a , b; /a b echo rtrim(a ),b; /ab,【例8-6】PHP内置库函数之字符串函数,substr 通过 substr 函数可以得到字符串的一部分。substr 函数的语法如下: substr(string,start,length) 意思是从字符串 string 的 start 位置开始,截取长度为 length 的字符串。字符串 string 的第一个字符的位置是0,而不是
15、1。示例如下: echo substr(hello,world! ,0,3);/hel 上面示例表示,从字符串第1个字符开始,截取3个字符,返回结果是 hel。 echo substr(hello,world! ,3,5);/lo,wo 上面示例的意思是从字符串 hello,world! 的第4个字符开始,截取5 个字符,得到的结果是 lo,wo。 也可以不写参数 length,表示从 start 位置开始截取后面所有的字符串,比如: echo substr(hello,world!, 3);/lo,world!,【例8-6】PHP内置库函数之字符串函数,strtolower strtolow
16、er 的功能是将字符串全部变成小写。示例如下: echo strtolower(SUNNY DAY!);/sunny day! strtoupper strtoupper 和 strtolower 相反,功能是将字符串都变成大写。示例如下: echo strtoupper(hello,world!);/ HELLO,WORLD! str_replace str_replace 的作用是替换字符串。str_replace 函数的语法如下: str_replace(search,replace,subject) 意思是在 subject 字符串中找到任何符合 search 的字符串,然后用 rep
17、lace 代替所有 search 字符串。 示例如下: echo str_replace(sunny,happy,it is a sunny day!); 上面的例子中,用 happy 替代 it is a sunny day! 字符串中所有的 sunny ,返回的结果是it is a happy day!。,【例8-6】PHP内置库函数之字符串函数,htmlspecialchars(string string) 函数的功能是:将字符串参数string中的特殊符号(如、”等)转化为HTML标记。该具体转换内容如下: 。 本例中的htmlspecialchars($text)函数把字符串$tex
18、t中的特殊符号都转换成了HTML标记。,【例8-7】PHP内置库函数之判断数据类型函数,is_array(mixed var) 判断变量是否为数组。如果参数var是数组就返回TRUE,否则返回FALSE。 is_bool(mixed var) 判断变量是否为布尔型。如果参数var是布尔型就返回TRUE,否则返回FALSE。 is_float(mixed var) 判断变量是否为浮点数。如果参数var是浮点数就返回TRUE,否则返回FALSE。 is_int(mixed var) 判断变量是否为整数。如果参数var是整数就返回TRUE,否则返回FALSE。 如果参数var是对象型就返回TRUE,否则返回FALSE。判断变量是否为NULL值。如果参数var未被定义或者被设置为NULL或者虽然已经被定义但又被unset()取消定义,则返回TRUE,否则返回FALSE。,【例8-7】PHP内置库函数之判断数据类型函数,is_numeric(mixed var) 判断变量是否为数字或者数字字符串。如果参数var为数字或者数字字符串则返回TRUE,否则返回FALSE。 is_object(mixed var) 判断变量是否为一个对象。如果参数var是对象型就返回TRUE,否则返回FALSE。 is_string(mixed var) 判断变量是否为字符串。如果参数v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国全自动剖沟机数据监测研究报告
- 山东省德州市宁津县2024-2025学年九年级上学期期末化学试卷(含答案)
- 高中禁毒测试题及答案
- 2019-2025年军队文职人员招聘之军队文职法学自我提分评估(附答案)
- 2019-2025年消防设施操作员之消防设备高级技能提升训练试卷A卷附答案
- 2023-2024学年广东省广州四中教育集团七年级(下)期中数学试卷(含答案)
- 汽油检测知识培训课件
- (一模)哈三中2025届高三第一次模拟考试 物理试题(含答案)
- 安徒生童话之丑小鸭的感悟
- 煤炭买卖居间合同
- 2024年批次杭州市教育局所属事业单位招聘笔试真题
- 2024年海东市第二人民医院自主招聘专业技术人员考试真题
- 《VAVE价值工程》课件 - 创造最大化的价值与效益
- 中医养生保健知识科普
- 社区居委会2025年工作总结暨2025年工作计划
- 2024年天翼云认证运维工程师考试复习题库(含答案)
- 水果联营合同范例
- 江苏卷2024年高考语文第一次模拟考试一(原卷版+解析版)
- 实验室仪器设备售后服务承诺书(7篇)
- 《主管技能训练》课件
- 2024解析:第十六章电压和电阻-讲核心(解析版)
评论
0/150
提交评论