php函数语法定义实例详解
函数是完成一个特定功能的代码集合,可以分为系统函数和用户函数。用户可以通过创建自定义函数实现特定需要。
1.函数定义语法结构:
PHP中允许用户使用function关键字创建一个自定义函数。语法结构:
function 函数名称(参数1, 参数2, ...)
{
//函数内的代码
}
PHP对函数名称的限制比较少,可以是以字母或下划线开头后跟字母、下划线或数字的任何字符串,而且不区分大小写。括号内是函数的参数,多个参数间用逗号分隔,没有参数时括号也不能省略。大括号内是函数体,在函数体内使用return语句可以指定函数的返回值。示例:
function format_Html($text){ $text=”<u><i><b>$text</b></i></u>”; //应用加粗、斜体和粗体标记 echo $text; //输出格式化后的字符串 }
2.使用函数:
用户函数创建之后,便可以像系统函数一样使用,即通过指定函数名称来调用。如果该函数需要参数,需要在小括号内指定参数的值,注意参数的类型应与定义时一致。
在调用用户自定义函数时,必须确保之前函数已经存在,即函数应先定义再调用。示例:
<table cellspacing=0 cellpadding=0 width”511” border=0> <tr> <td width=”70” height=22>产品名称:</td> <td width=”292” height=22 class=”title”><?php format_Htmi(“企业管理系统”); ?></td> </tr> </table>
3.函数返回值:
有时需要在程序外部使用函数执行的结果,这时就需要在函数内使用return语句指定一个返回值。使用return语句可以为函数返回任何类型的数据。示例:
<?php function getDataAry(){ $resAry=array(95,87,79,80,62,74,90,92); //创建一个数组 return $resAry; //返回该数组 } $ary=getDataAry(); //保存函数返回的数组 foreach ($ary as $i) echo $i.”,“; //遍历数组,输出所有数 ?>
4.函数参数传递方式:
PHP支持的参数传递方式有:按值传递、按索引传递、默认值传递和可变参数列表传递。
1)按值传递:
按值传递是PHP默认的参数传递方式。这种传递方式将为函数外部变量的值创建一个副本,然后赋给函数内部的局部变量。在函数处理完成后,该外部变量的值不发生改变,除非在函数内部声明该外部变量作用域为全局。示例:
<?php function PassByValue($number, $str){ //按值传递参数 $number+=100; //第一个参数增加100 $str.=” World”; //第二个参数附加World字符串 echo “函数内\$number=”,$number, “, \$str”, $str, “<br>”; //输出参数 } $number=3; //创建一个整数作为第一个参数 $str=”hello”; //创建一个字符串作为第二个参数 PassByValue($number, $str); //调用 echo “函数外\$number=”,$number, “, \$str”, $str, “<br>”; //输出调用两个参数的值 ?>
输出结果为:
函数内$number=103, $str=hello World
函数外$number=3, $str=hello
可见,PHP按值传递参数,在函数范围内对这些值的任何改变在函数外部都会被忽略。
2)按引用传递:
在按引用传递参数方式下,实参的内存地址被传递到形参中,在函数内部对形参的任何修改都会影响到实参,因为它们被存储到同一个内存地址。函数返回后,实参的值将会发生改变。引用传递参数的形参和实参都是针对同一个块地址修改。如果希望一个函数参数通过引用被传递,需要在函数定义的参数名前添加符号&来实现。示例:
<?php function PassByValue(&$number, &$str){ //按引用传递参数 $number+=100; //第一个参数增加100 $str.=” World”; //第二个参数附加World字符串 echo “函数内\$number=”,$number, “, \$str”, $str, “<br>”; //输出参数 } $number=3; //创建一个整数作为第一个参数 $str=”hello”; //创建一个字符串作为第二个参数 PassByValue($number, $str); //调用 echo “函数外\$number=”,$number, “, \$str”, $str, “<br>”; //输出调用两个参数的值 ?>
输出结果为:
函数内$number=103, $str=hello World
函数内$number=103, $str=hello World
可见,使用通过引用传递参数的方式时,在函数内对这些值的任何改变,在函数之外也能反映出这些修改。
3)默认值传递:
除了按值传递参数和按引用传递参数的方式外,一个函数还可以使用预先定义好的默认参数。在未指定参数的情况下,函数使用默认值作为函数的参数;在提供了参数的情况下,函数使用指定的参数。示例:
<?php function setFontColor($str, $color=”red”){ //创建带默认值的参数 echo “<font color=’ “.$color.”’.”.$str.”</font></br>”; } setFontColor(“教程”); //使用参数的默认值 setFontColor(“热门商品”, “black”); //修改参数的默认值 ?>
可见,调用函数时,可以传递两个参数,也可以传递一个参数。如果只传递一个参数,则第二个参数使用创建函数时定义的默认值。
在使用PHP的默认参数时需要注意,默认值必须是常量表达式,不能是变量。如果函数有多个参数,可以为多个参数指定默认值。但是,带默认值的参数只能位于参数列表的最后,即一个默认值参数的右边不能出现没有指定默认值的参数。
4)可变参数列表传递:
即参数的数量是不确定的。这种方式需要借助3个特殊的函数获取传入的参数,如下表。
func_num_args() func_num_args(void) 返回自定义的函数中传入的参数个数
func_get_arg() func_get_arg($arg_num) 取得第$arg_num+1个参数的值
func_get_args() func_get_args(void) 返回一个包含所有参数的数组
示例:创建一个函数实现对调用时传递的任意数量的数字进行排序并输出
<?php function sortNumbers(){ //排序函数 $count=func_num_args(); //获取实际传递的参数个数 $ary=func_get_args(); //获取所有参数列表的数组 rsort($ary); //对数组进行排序 echo “本次排序的共有$count个数字,结果如下:\n”; foreach ($ary as $n) echo ” $n“; //输出排序后的数字 echo ” \n“; } sortNumbers(3, 5, 2, 56, 74, 82, 53, 66, 79, 46); //排序10个数 sortNumbers(59, 26, 46, 31, 89, 47); //排序6个数字 ?>
创建函数时没有参数,在函数内使用func_num_args()函数获得实际调用时参数的数量并保存到变量中,使用func_get_args()函数获得所有传递的参数,并以数组形式保存到变量中。
5.递归函数:
递归函数,是指在一个函数的函数体内调用函数本身。在递归函数中,主调函数又是被调函数,递归函数反复调用其自身,每调用一次进入新的一层。示例:
<?php function sum($number) //递归函数 { if($number!=0) //判断是否停止递归 { return $number+sum($number-1); //在返回值中调用本函数 } } echo ” 100求和结果:“.sum(100); //输出求和结果 ?>
递归函数只需要少量的程序即可描述出解题过程所需要的多次重复计算,大大减少了程序的代码量。但是,必须为递归函数设置停止条件,否则会造成死循环。
6.嵌套函数:
嵌套函数是指在一个函数体中又同时定义一个函数,两个函数形成嵌套关系。此时只有外部函数被调用后,内部函数才能使用。示例:
<?php function start() //外部函数 { echo ”正在开机...\n“; function boot() //内部函数 { echo ”正在加载引导程序...\n“; } function welcome($user) //内部函数 { echo ”欢迎[$user]使用本系统。\n“; } } start(); //调用外部函数,此时内部函数均变得可用 boot(); welcome(“dwenzhao”); ?>
上述代码定义了3个函数,start()是外部函数,其中包含了boot()和welcome()两个函数。因此,为了使用boot()和welcome()函数,必须先调用start()函数,否则将提示函数未定义。
7.判断函数是否存在:
开发大型项目时通常是多人协作,这时就要避免自定义函数名称存在的情况。PHP中可以使用function_exists()函数判断指定的用户函数是否已经存在。示例:
<?php if(!function_exists(“userLogin”)) //判断userLogin()函数是否存在 { function userLogin($u) //如果不存在则创建 { echo ”用户$u登录成功“; } } userLogin(“dwenzhao”); //调用userLogin函数 ?>
还可以使用create_function()函数创建一个临时函数,这个函数名称由PHP动态生成,从而避免名称相同的情况。示例:
<?php if(!function_exists(“userLogin”)) //判断userLogin()函数是否存在 { function userLogin($u) //如果不存在则创建 { echo ”用户$u登录成功“; } } $userLogin=create_function(‘$u’, ‘echo ”用户$u登录成功“;’); echo $userLogin(“dwenzhao”); ?>
以上是php函数语法定义实例详解的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

如果您是一位经验丰富的 PHP 开发人员,您可能会感觉您已经在那里并且已经完成了。您已经开发了大量的应用程序,调试了数百万行代码,并调整了一堆脚本来实现操作

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。
