PHP高级编程中关于PHP函数的介绍

PHP函数

在PHP中,函数是一段PHP代码的集合,通过调用函数就可以执行一些任务或返回一些结果。PHP脚本通常是由主程序和函数构成的,这些函数不仅构成了PHP脚本的主要功能,也实现了程序代码的结构化,方便他人阅读。

函数可以分为用户自定义函数和系统函数,用户自定义函数是有用户自行编写实现的,功能也由用户所编写的代码来决定。系统函数是PHP系统或扩展库内置的函数,这些函数一般已经存在,直接调用即可。

一、用户自定义函数

定义函数的格式如下:

function function_name([$parameter[,...]])
{
    //函数代码段
}

定义函数的关键字为function。function_name是用户自定义的函数名,通常这个函数名可以是以字母或下划线开头后面跟0个或多个字母、下划线和数字的字符串,且不区分大小写,需要注意的是,函数名不能与系统函数或用户已经定义的函数重名。

$parameter为函数的参数,函数一般可以有0个或多个参数。当参数个数为0时,函数可以被直接调用,当参数个数不为0时,用户在调用时就需要提供有效的参数。

在函数定义时,花括号内的代码就是在调用函数时将会执行的代码,这段代码可以包括变量、表达式、流程控制语句,甚至是其他的函数或类定义。

二、参数的传递

一般情况下,参数是通过值来传递的。通过值传递参数不会应为函数内部参数值的变化而改变函数外部的值。

如果希望函数修改外部传来的参数值,可以使用引用参数传递,只要在定义函数时在参数前面加上“&”。

函数还可以使用默认参数,在定义函数时给参数赋予默认值,参数的默认值必须是常量表达式,不能是变量、类成员或函数调用。在使用默认参数时,任何默认参数都要放在非默认参数的右侧,否则函数可能不会按预期情况工作。

三、函数的作用域

在主程序定义的变量和在函数中定义的变量都是局部变量。在函数中定义的变量只能在函数内部使用。在主程序中定义的变量只能在主程序中使用,而不能在函数中使用。如果要使函数中的变量作用于函数外部,需要使用global关键字将变量声明为全局变量。函数中的变量还可以声明为静态变量,函数被调用完后静态变量的值并不丢失,在下次调用该函数时,静态变量的值是上次调用函数时赋的值。

四、函数的返回值

函数声明时,在函数代码中使用return语句可以立即结束函数的运行,程序返回到调用该函数的下一条语句。

中断函数执行并不是return语句最常用的功能,许多函数使用return语句返回一个值来与调用它们的代码进行交互。函数的返回值可以是任何类型的值,包括列表和对象。

五、函数的调用

函数在声明后就可以被调用。函数如果没有返回值,调用时使用函数名即可。如果函数具有返回值,则可以将函数的返回值赋给一个变量。

六、递归函数

PHP支持递归函数,递归函数就是调用函数本身,可以实现循环的作用。

使用递归函数时一定要给出递归的终止条件,否则函数将一直执行下去直到服务器内存耗尽,或达到最大调用次数。

七、变量函数

PHP中有变量函数这个概念,在变量的后面加上一对小括号就构成了一个变量函数。

如果创建了变量函数,PHP脚本运行时将寻找与变量名相同的函数,如果函数存在,则尝试执行该函数,如果不存在则产生一个错误。为防止这类错误,可以在调用变量函数之前使用PHP的function_exist()函数来判断该变量函数是否存在。

变量函数不能用于语言结构,如echo()、print()、unset()、include()、require()、isset()。

八、系统函数

用户自定义函数可以进行逻辑运算,而大部分的系统底层工作需要由系统函数来完成。

PHP系统了丰富的系统函数供用户使用,包括文件系统函数、数组函数、字符串函数等。并不是所有的系统函数都能直接调用,有一些扩展的系统函数需要安装扩展库之后才能调用。当前运行环境支持的函数列表可以在phpinfo页面查看。

时间: 2024-08-26 05:42:15

PHP高级编程中关于PHP函数的介绍的相关文章

unix高级编程中的一个头文件 apue.h 与一个差错文件error.c 的内容

在查看unix高级编程中的代码时,如果我们编写书中的代码,发现一般都会报错,这是因为作者在写这本书时,他自己编写了一个头文件,跟一个差错处理文件,出来处理他自己的代码错误信息: 下面我们来看下代码的内容: 我实现第一个代码,关于文件的打开,实现 ls 命令的代码: #include "apue.h"#include <stdio.h>#include <dirent.h> int main(int argc, char *argv[]){ DIR *dp; st

socket编程之三:socket网络编程中的常用函数

这节本来打算先给出常用函数介绍,再给两个代码实例,写着写着发现越来越长,决定把代码放在下一节. 本节内容持续更新...... 1 socket()函数 原型: int socket(int domain, int type, int protocol); 描述: 类似打开一个文件,返回一个socket描述符,唯一标识一个socket,后面相应的操作都是这用这个socket描述符. 参数: domain:协议族,常用的协议族有AF_INET.AF_INET6.AF_LOCAL.AF_ROUTE等:

linux编程中接收主函数返回值以及错误码提示

程序A创建子进程,并调用进程B,根据不调用的不同情况,最后显示结果不同. #include <stdio.h> #include <unistd.h> #include <sys/wait.h> #include <sys/types.h> #include <errno.h> int main() { pid_t pid, rpid; int stat; if ((pid = fork()) < 0) { perror("for

Python编程中自定义Lambda函数的使用场景

Python 中定义函数有两种方法,一种是用常规方式 def 定义,函数要指定名字,第二种是用 lambda 定义,不需要指定名字,称为 Lambda 函数. Lambda 函数又称匿名函数,匿名函数就是没有名字的函数,函数没有名字也行?当然可以啦.有些函数如果只是临时一用,而且它的业务逻辑也很简单时,就没必要非给它取个名字不可. 好比电影里面的群众演员,往往他们的戏份很少,最多是衬托主演,跑跑龙套,他们需要名字吗?不需要,因为他们仅仅只是临时出镜,下次可能就用不着了,所以犯不着费心思给他们每个

&lt;UNIX环境高级编程&gt;文件共享及fork函数

UNIX系统支持在不同进程间共享打开文件.内核使用3种数据结构表示打开文件,它们之间的关系决定了文件共享方面一个进程对另一个进程可能产生的影响. 内核维持了3个表,即进程表,文件表和v节点表.具体如下: 1>每个进程在进程表中都有一个纪录项,记录项中包含一张打开文件描述符表,每个描述符占用一项.与每个文件描述符相关联的是: a. 文件描述符标志(close_on_exec): b. 指向一个文件表项的指针. 2>内核为所有打开文件维持一张文件表.每个文件表项包含: a. 文件状态标志(读.写.

SQL Server中的RAND函数的介绍和区间随机数值函数的实现

    工作中会遇到SQL Server模拟数据生成以及数值列值(如整型.日期和时间数据类型)随机填充等等任务,这些任务中都要使用到随机数.鉴于此,本文将对SQL Server中随机数的使用简单做个总结 .   T-SQL 随机有关的三个函数          RAND([seed] 此函数生成从0到1之间随机 float 值(详细说明查看https://technet.microsoft.com/zh-cn/library/ms177610(v=sql.90).aspx). CHECKSUM

Python中re模块函数使用介绍

Python中通过re模块实现了正则表达式的功能.re模块提供了一些根据正则表达式进行查找.替换.分隔字符串的函数.本文主要介绍re模块中常用的函数和函数常用场景. re模块常用函数 1.match(pattern,string,flags=0) 根据pattern从string的头部开始匹配字符串,只返回第1次匹配成功的对象,否则,返回None.flags表示规则选项. >>> import re >>> Str='Python:Java:C' >>>

在PHP编程中常用的函数

<?php//===============================时间日期===============================//y返回年最后两位,Y年四位数,m月份数字,M月份英文.d月份几号数字,D星期几英文$date=date("Y-m-d");$date=date("Y-m-d H:i:s");//带时分秒 //include,include_once.require,require_once//require("file

python编程中的闭包函数

什么是闭包? 简单说,闭包就是根据不同的配置信息得到不同的结果 再来看看专业的解释:闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数.这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外.所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体. 看概念总是让人摸不着头脑,看几个python小例子就会了 例1 def make_adder(addend):     def adder(augend):