PHP学习(十)--函数的应用

PHP的函数应用

函数就是有一定功能的一些语句组织在一起的一种形式,定义函数的目的是讲程序按功能分块,方便程序使用、管理、阅读和调试。函数有两种,一种是别人写好或系统内部提供的函数,另一种函数则是自己定义的,用来实现自己独特的需求。

函数的定义

函数定义就是一个呗命名的、独立的代码段,它执行特定的任务,并可能给调用它的程序返回一定的值:

(1)函数是被命名的:每个函数都有唯一的名称,在程序的其他部分使用该名称,可以执行函数中的语句,称为调用函数。

(2)函数是独立的:无需程序其他部分的干预,函数便能够单独执行其任务。

(3)函数执行特定任务:任务是程序运行时所执行的具体工作。

(4)函数可以将一个返回值返回给调用它的程序:程序调用函数时,将执行该函数中的语句,而这些语句可以将信息返回给调用他们的程序。

使用函数提高程序的重用性;提高软件的可维护性;提高软件的开发效率;提高软件的可靠性;控制程序设计的复杂性。

自定义函数

1、函数的声明

function 函数名(参数1,参数2……参数n){
    函数体;
    return 返回值;
}

函数的语法格式说明如下:

(1)每个函数的第一行都是函数头,由声明函数的关键字function、函数名和参数列表三部分组成,其中每一部分完成特定的功能。

(2)每个自定义函数都必须使用function关键字声明。

(3)函数名可以代表整个函数,可以将函数命名为任何名称,只要遵循变了名的命名规则即可。每个函数都有唯一的名称,但要注意在PHP中不能使用函数重载,所以不能定义重名的函数,也包括不能和系统函数同名。

(4)声明函数时函数名后面的括号必须有,在括号中表明了一组可以接受的参数列表,参数就是声明的变量,然后在调用函数时传值,参数列表可以没有,也可以有一个或者多个,多个参数使用逗号分隔。

(5)函数体位于函数头后面,用花括号括起来。实际的工作是在函数体中完成的。函数被调用后,首先执行函数体中的第一句,执行到return语句或最外面的花括号结束,返回到调用的程序。函数体中可以使用任何有效的PHP代码,甚至是其他的函数或类的定义也可以在函数体中声明。

(6)使用关键字return可以从函数中返回一个值,咋我return后面叫上一个表达式,程序执行到return语句时,该表达式将被计算,然后返回到调用程序处将被继续执行。函数的返回值为该表达式的值。

2、函数的调用

(1)通过函数名称去调用函数,并让函数体的代码运行,调用几次函数体就会执行几次。

(2)如果函数有参数列表,还可以通过函数名后面的小括号传入对应的值给参数,在函数体中使用参数来改变函数内部代码的执行行为。

(3)如果函数有返回值,当函数执行完毕时就会将return后面的值返回到调用函数的位置,这样就可以把函数名称当做函数返回的值使用。

3、函数的参数

参数列表是由零个、一个或多个参数组成的,每个参数是一个表达式,用逗号隔开。对呀有参函数,在PHP脚本程序中和被调用函数之间有数据传递关系。定义函数时函数名后面括号内的表达式成为形式参数,简称形参,被调用函数名后面括号中的表达式成为实际参数,简称实参,实参和形参需要按顺序对应传递数据。如果函数没有参数列表,函数执行的任务就是固定的,在调用函数时不能改变函数内部的一些执行行为。

4、函数的返回值

return语句在函数体中使用时,有一下两个作用:

(1)return语句可以向函数调用者返回函数体中任意确定的值。

(2)将程序控制权返回到调用者的作用域,即退出函数。在函数体中如果执行到return语句,它后面的语句就不会再被执行。

函数的工作原理和结构化编程

仅当函数被调用后,函数中的语句才会被执行,目的是去完成一些特定的任务,而函数执行完毕后,控制权将返回到调用函数的地方,函数就能够以返回值的方式将信息返回给程序,通过在程序中使用函数,可以进行结构化编程。在结构化编程中,各个任务是由独立的程序代码段完成的,而函数正是实现独立的程序代码段最理想的方式。

结构化程序更容易编写,因为复杂的编程问题被划分为多个更小、更简单的任务。每个任务由一个函数完成,而函数中的代码和变了独立于程序的其他部分。通过每次处理一个简单的任务,编程速度将更快。

结构化编程更容易调试。

PHP变量的范围

变量范围就是它的生效范围。大部分PHP变了只有一个单独的使用范围,也包含了include和require引入的文件。当一个变量执行赋值动作后,会随着声明区域位置的差异而又不同的使用范围,大致分为局部变了和全局变量两种。

1、局部变量

局部变量也成为内部变量,是在函数内部声明的变量,其作用域仅限于函数内部,离开函数后再使用这种变量是非法的。不仅在函数中声明的变量是局部变量,为声明函数的设置的参数因为只能在本函数的内部使用所以也是局部变量。区别在于函数的参数具有数值从外部获得,而直接在函数中声明的变量只能在函数内部被赋值。

2、全局变量

全局变量也成为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。和其他编程语言不同,全局变量不是自动设置为可用的。在PHP中,由于函数可以视为单独的程序片段,所以局部变量会覆盖全局变量的能见度,因此在函数中并无法直接调用全局变量。

在函数中使用全局变量需要使用关键字global或者使用特殊的PHP自定义$GLOBALS数组。

3、静态变量

局部变量从存储方式上可以分为静态存储类型和动态存储类型。动态变量会在函数调用结束后自动释放。静态变量使用关键字static。

声明及应用各种形式的PHP函数

在PHP系统中有很多标准的函数可供使用。调用系统函数和调用自定义函数是一样的。

1、常规参数的函数

常规参数的函数格式如下:

string example(string name, int age, double height);

所谓的常规参数的函数,就是实参和形参应该个数相等、类型一致。

2、伪类型参数的函数

伪类型参数的函数格式如下:

mixed funName(mixed $ages);
number funName(number $ages);

PHP是弱类型语言,不仅在声明变量时不需要指定类型,当然在声明函数时也不需要指定类型,所以在PHP中函数的每个参数,都可以为其传递任意类型的值。

3、引用参数的函数

引用参数的函数格式如下:

void funName(array &arg)

PHP中默认是按值传递参数,而且函数的参数也属于局部变量,所以即使在函数内部改变参数值,它并不会改变函数外部的值。函数为子程序,调用函数的程序为父程序。父程序直接传递指定的值或是变量给函数使用。由于所传递的值或变量与函数里的数值分别存储于不同的内存区块,所以如果函数对所导入的数值做了任何变动,并不会对父程序造成直接影响。

注意:如果在函数的形参中使用&修饰参数,在调用该函数时就必须传入一个变量给这个参数,而不是传递一个值。

4、默认参数的函数

默认参数的函数格式如下:

mixed funName(string name [, string value [, int expire]])

在定义函数时声明了参数,而在调用函数时没有指定参数或是少指定了参数,就会出现缺少参数的警告。在PHP中支持函数的默认方式调用,即为参数指定一个默认值。

5、可变个数的参数函数

可变个数的参数函数格式如下:

mixed funName(string arg1 [,string ...])

使用默认参数适合实参个数少于形参的情况,而可变参数列表则适合实参个数多于形参的情况。如果在函数中使用不到多传入的参数则没有意义。通常用户定义函数时,设置的参数数量是有限的。如果希望函数可以接受任意数量的参数,需要在函数中使用PHP系统提供的func_get_arags()函数,它将所有传递给脚本函数的参数当做一个数组返回。

6、回调函数

回调函数格式如下:

mixed funName(callback arg)

回调函数就是指调用函数时并不是传递一个标准的变量作为参数,而是将一个函数作为参数传递到调用的函数中。

1、变量函数:如果一个变量名后有圆括号,PHP将寻找与变量的值同名的函数,并尝试执行它。

2、使用变量函数声明和应用回调函数:使用回调函数的目的是可以将一段自己定义的功能传到函数内部使用。

3、借助call_user_func_array()函数定义回调函数。

4、类静态函数和对象的方法回调。

递归函数

递归函数即自调用函数,在函数体内部直接或间接地自己调用自己,即函数的嵌套调用函数本身。一般会俯角判断条件。其最大的好处在于可以净残程序中繁杂重复调用程序,并且能以这种特性来执行一些较为复杂的运算动作。

使用自定义函数库

函数库不是定义函数的PHP语法,而是编程时的一种设计模式。函数是结构化程序设计的模块,是实现代码重用的核心。一般会使用include()、include_once()、require()或require_once()。

require()语句的性能和include()语句相似,都是包括并运行指定文件。不同之处在于include()咋执行文件时每次都要进行读取和评估,而require()文件只处理一次。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值