PHP从入门到精通—函数—函数的基本用法、变量的作用域、函数的高级用法、PHP手册的使用

6个月前发布 SanS三石
35 0 0

介绍了PHP的编程基础(PHP从入门到精通—PHP编程基础-PHP基本语法、变量、 常量 PHP从入门到精通—PHP编程基础-PHP运算符、表达式与语句、流程控制语句),PHP程序由一系列语句组成,这些语句都是为了实现某个具体的功能。如果这个功能在整个应用中会经常使用,则每一处需要该功能的位置都写上同样的代码,必将会造成大量的冗余代码,不便于开发及后期维护。为此,PHP中引入函数的概念,它就是为了解决一些常见问题而制作好的模型。

PHP从入门到精通—函数—函数的基本用法、变量的作用域、函数的高级用法、PHP手册的使用

函数的基本用法

PHP中的函数分为系统内置函数和自定义函数,系统内置函数在前面章节中已有所使用。

Ø 函数的定义

在PHP中,函数就是将重复使用的功能写在一个独立的代码块中,在需要时进行单独调用,其语法格式如下:

PHP从入门到精通—函数—函数的基本用法、变量的作用域、函数的高级用法、PHP手册的使用

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

(1)“function 函数名 ([参数名1[ = 值1], 参数名2[ = 值2], …])”为函数头,由关键字function、函数名和参数列表三部分组成。

(2)函数名与变量命名规则基本相同,但函数名不区分大小写。

(3)函数体位于函数头之后,用花括号括起来,代表这是一个函数的功能区间。

(4)用方括号[]括起来的部分表示可选填,即参数列表与返回值是可选的,其他部分是必须存在的。

对函数定义的语法有所了解后,接下来定义一个最简单的函数output(),具体示例如下:

PHP从入门到精通—函数—函数的基本用法、变量的作用域、函数的高级用法、PHP手册的使用

上述定义的output()函数没有参数列表和返回值,函数体只是输出一句话。

此外,需注意同一函数不能被定义两次,具体示例如下:

PHP从入门到精通—函数—函数的基本用法、变量的作用域、函数的高级用法、PHP手册的使用

此处,PHP解释器会报错,提示重复声明。

Ø 函数的调用

当函数定义完成后,如果需要使用函数的功能,就需要调用函数。函数的调用十分简单,前面的章节中多次调用系统内置函数,调用自定义函数的方法与它类似,其语法格式如下:

函数名([参数名1[ = 值1], 参数名2[ = 值2], …])

函数调用只需引用函数名并赋予正确的参数即可。

Ø 函数的参数

参数列表是由一系列参数组成,每个参数是一个表达式,用逗号隔开。在调用函数时,如果需要向函数传递参数,则被传入的参数称为实参,而函数定义时的参数称为形参,实参与形参需要按对应顺序传递数据。参数传递的方式有按值传递、按引用传递和默认参数。

1.按值传递

按值传递就是将实参的值赋给对应的形参,在函数内部操作的是形参,因此操作的结果不会影响到实参。

2.按引用传递

按引用传递就是将实参按引用赋值给形参,在函数内部所有对形参的操作都会影响到实参的值。引用传递就是在形参前加“&”符号,与变量的引用类似。

3.默认参数

如果参数列表中的某个参数有值,就称这个参数为默认参数。注意默认参数必须放在非默认参数的右侧,否则运行时将会报错。

Ø 函数的返回值

函数的参数列表是调用者将数据传递到函数内部的接口,而函数的返回值是将函数执行后的结果返回给调用者。注意return并不是函数必需的部分,具体视函数功能而定。另外,程序调用函数时,遇到return语句,则该函数剩余的代码将不会被执行。

变量的作用域

变量需要先定义后使用,但这并不意味着变量定义后就可以随便使用,只有在它的作用范围中才可以被使用,这个作用范围称为变量的作用域。总体来说,变量根据定义的位置分为局部变量和全局变量。

Ø 局部变量

局部变量是在函数内部定义的变量,其作用域仅限于函数内部,离开该函数后再使用此变量是非法的。另外,函数定义中的普通形参由于只能在本函数内部使用,因此也是局部变量。

Ø 全局变量

全局变量是指在函数外部定义的变量,其作用域从变量定义处开始,到本程序文件末尾结束。此处需注意,函数中的局部变量会屏蔽全局变量,因此在函数中无法直接访问全局变量。

Ø 静态变量

静态变量是一种特殊形式,它的特征是普通变量不具备的,下面主要介绍静态变量。

局部变量从存储方式上可分为动态存储类型和静态存储类型。函数中的局部变量默认都是动态存储类型,即在函数调用结束后自动释放存储空间。但有时希望在函数结束后,局部变量依然保存在内存中,这时就需要使用static关键字。

static修饰的变量称为静态变量,其存储方式为静态存储,即在第一次调用函数时该变量被初始化,下次调用函数时该变量的值并不会消失。

函数的高级用法

Ø 可变函数

在学习可变变量时,一个变量的值可以为另一个变量的名称。此外,一个变量的值还可以是一个函数的名称,这就是可变函数。该变量名后加上圆括号,就可以执行与其值同名的函数,因此,可变函数也称为变量函数。

PHP从入门到精通—函数—函数的基本用法、变量的作用域、函数的高级用法、PHP手册的使用

Ø 引用函数返回值

引用不仅可以用于普通变量、函数参数,还可以用于函数的返回值,此时只需在函数名前添加&符号。此处需注意,在调用函数时,引用函数返回值需要在函数名前添加&符号,用来说明返回的是一个引用。

PHP从入门到精通—函数—函数的基本用法、变量的作用域、函数的高级用法、PHP手册的使用

Ø 函数的嵌套调用

PHP语言允许在函数定义中出现函数调用,从而形成函数的嵌套调用。这种嵌套在程序开发中经常使用,接下来演示函数的嵌套调用。

PHP从入门到精通—函数—函数的基本用法、变量的作用域、函数的高级用法、PHP手册的使用

Ø 函数的递归调用

在函数的嵌套调用中,一个函数除了可以调用其他函数外,还可以调用自身,这就是函数的递归调用。递归必须要有结束条件,否则会无限地递归。

接下来演示函数的递归调用。

PHP从入门到精通—函数—函数的基本用法、变量的作用域、函数的高级用法、PHP手册的使用

Ø 回调函数

在调用函数时,除了传递普通的变量作为参数外,还可以将另一个函数作为参数传递到调用的函数中,这就是回调函数。若要自定义一个回调函数,可以使用可变函数来实现,即在函数定义时参数是一个普通变量,但在函数体中使用这个参数变量时加上圆括号,就可以调用和这个参数值同名的函数。

接下来演示回调函数。

PHP从入门到精通—函数—函数的基本用法、变量的作用域、函数的高级用法、PHP手册的使用

在例中,第14行为回调函数,首先判断$operation的值是否为函数,若不是,则返回false;若是,调用$operation值所代表的函数。从此例题中可以得出使用回调函数的优势:对于同一个函数可以根据传入参数的不同而去执行不同的函数。例如本例中,当调用calculate()函数时,如果参数$operation为add,则将会调用add()函数;如果参数$operation为sub,则将会调用sub()函数,这样使程序更加灵活并便于维护。

除了使用可变函数实现回调函数外,还可以使用call_user_func_array()函数来实现回调函数。它是PHP中的内置函数,其语法格式如下:

PHP从入门到精通—函数—函数的基本用法、变量的作用域、函数的高级用法、PHP手册的使用

其中,第一个参数表示需要调用的函数名,此处需要传递一个字符串;第二个参数是一个数组类型的参数,表示调用函数的参数列表。

Ø PHP手册的使用

PHP手册内容主要由函数参考构成,但也包含了语言参考、PHP 一些主要产品特点的说明以及其他补充信息。前面经常使用系统内置函数,但记住所有内置函数的用法是不太现实的,因此需了解如何通过PHP手册查阅内置函数的用法。

1.打开手册

用户在浏览器地址栏中输入http://www.php.net/manual/zh/index.php,就可以打开PHP手册,如图所示。

PHP从入门到精通—函数—函数的基本用法、变量的作用域、函数的高级用法、PHP手册的使用

2.搜索函数

在上图右上角输入框中输入函数名(不需要添加圆括号)并按Enter键,浏览器就会显示函数的用法[此处以call_user_func_array()函数为例] ,如图所示。

PHP从入门到精通—函数—函数的基本用法、变量的作用域、函数的高级用法、PHP手册的使用

在图中,注意每个函数支持的版本号与搭建的PHP环境中的版本号是否匹配。

3.查看参数及返回值

拖动右侧滚动条至参数标题处,浏览器显示call_user_func_array()函数参数及返回值的详细介绍,如图所示。

PHP从入门到精通—函数—函数的基本用法、变量的作用域、函数的高级用法、PHP手册的使用

查阅一个函数,用户必须清楚以下三点内容:

函数的功能

函数的参数

函数的返回值

4.查看范例

了解函数的参数和返回值后,用户有可能还是不太清楚call_user_func_array()函数的用法,继续拖动右侧滚动条,找到范例,通过例题来加深对这个函数的学习,如图所示。

PHP从入门到精通—函数—函数的基本用法、变量的作用域、函数的高级用法、PHP手册的使用

初学者在以后学习PHP时,需要经常查看PHP手册,多尝试几次就会发现其实并没有想象中的那么困难。

小结:PHP从入门到精通—函数—函数的基本用法、变量的作用域、函数的高级用法、PHP手册的使用

主要介绍了PHP程序中的函数,从函数的基本语法开始,接着讲解变量的作用域和函数的高级用法,最后讲解PHP手册的查阅。学习完本章内容,大家可以根据需要自定义函数或调用系统内置函数,并学会查阅PHP手册。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...