在PHP中可以通过【function foo($arg_1, $arg_2, /* ..., */ $arg_n){echo "Example function.\n";return $retval;}】形式定义一个方法。

用户自定义函数

一个函数可由以下的语法来定义:

Example #1 展示函数用途的伪代码<?php

function foo($arg_1, $arg_2, /* ..., */ $arg_n)

{

echo "Example function.\n";

return $retval;

}

?>

任何有效的 PHP 代码都有可能出现在函数内部,甚至包括其它函数和类定义。

函数名和 PHP 中的其它标识符命名规则相同。有效的函数名以字母或下划线打头,后面跟字母,数字或下划线。可以用正则表达式表示为:^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$。

Tip

请参见用户空间命名指南。

函数无需在调用之前被定义,除非是下面两个例子中函数是有条件被定义时。

当一个函数是有条件被定义时,必须在调用函数之前定义。

Example #2 有条件的函数<?php

$makefoo = true;

/* 不能在此处调用foo()函数,

因为它还不存在,但可以调用bar()函数。*/

bar();

if ($makefoo) {

function foo()

{

echo "I don't exist until program execution reaches me.\n";

}

}

/* 现在可以安全调用函数 foo()了,

因为 $makefoo 值为真 */

if ($makefoo) foo();

function bar()

{

echo "I exist immediately upon program start.\n";

}

?>

Example #3 函数中的函数<?php

function foo()

{

function bar()

{

echo "I don't exist until foo() is called.\n";

}

}

/* 现在还不能调用bar()函数,因为它还不存在 */

foo();

/* 现在可以调用bar()函数了,因为foo()函数

的执行使得bar()函数变为已定义的函数 */

bar();

?>

PHP 中的所有函数和类都具有全局作用域,可以定义在一个函数之内而在之外调用,反之亦然。

PHP 不支持函数重载,也不可能取消定义或者重定义已声明的函数。

Note: 从 A 到 Z 的 ASCII 函数名是大小写无关的,不过在调用函数的时候,使用其在定义时相同的形式是个好习惯。

PHP 的函数支持可变数量的参数和默认参数。参见 func_num_args(),func_get_arg() 和 func_get_args()。

在 PHP 中可以调用递归函数。

Example #4 递归函数<?php

function recursion($a)

{

if ($a < 20) {

echo "$a\n";

recursion($a + 1);

}

}

?>

Note: 但是要避免递归函数/方法调用超过 100-200 层,因为可能会使堆栈崩溃从而使当前脚本终止。 无限递归可视为编程错误。

php 自定义条件,php如何自定义一个方法相关推荐

  1. 学成在线--3.CMS页面管理开发(自定义条件查询)

    文章目录 0.需求分析 1.服务端--Dao 2.服务端--Service 3.服务端--Controller 4.前端 1)page_list.vue中增加查询表单 2)page_list.vue中 ...

  2. java自定义一个方法,用于返回两个整数的和

    java自定义一个方法,用于返回两个整数的和 /*** 自定义一个方法* 用于返回两个整数的和*/ public class Test17 {public static int getSum(int ...

  3. .NET/C#中对自定义对象集合进行自定义排序的方法

    一个集合可否排序,要看系统知不知道排序的规则,像内建的系统类型,int ,string,short,decimal这些,系统知道怎么排序,而如果一个集合里面放置的是自定义类型,比如自己定义了一个Car ...

  4. SAP MM 自定义条件类型出现在采购信息记录的'条件'界面里 ?

    SAP MM 自定义条件类型出现在采购信息记录的'条件'界面里 ? 我在SAP系统里复制某个标准的采购条件类型,创建了一个新的自定义条件类型ZC05,并将其分配采购定价过程RM0000. 结果却出现一 ...

  5. python如何自定义模块_python自定义模块和开源模块使用方法

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  6. ios开发 自定义btn_iOS一步步实现一个高度自定义UIButton控件

    需求背景 日常开发中UIButton的图片与标题默认的布局是固定的,是在水平方向左右排列.但是我们会经常需要更改image和title的位置来实现需求,这是个很常见的需求就不多说了.所以下面就来谈谈如 ...

  7. vue自定义指令封装节流_Vue自定义指令封装节流函数的方法示例

    节流函数是web前端开发中经常用到的一个开发技巧,在input实时搜索,滚动事件等,为了避免过多消耗性能,我们都会使用节流函数.在<JavaScript高级程序设计>一书中有这样的一个例子 ...

  8. HTML 5 的自定义 data-* 属性和jquery的data()方法的使用

    HTML 5 的自定义 data-* 属性和jquery的data()方法的使用 人们总喜欢往HTML标签上添加自定义属性来存储和操作数据.但这样做的问题是,你不知道将来会不会有其它脚本把你的自定义属 ...

  9. android 自定义 theme,Android使用Theme自定义Activity进入退出动画的方法

    本文实例讲述了Android使用Theme自定义Activity进入退出动画的方法.分享给大家供大家参考,具体如下: 有没有觉得Activity的默认动画太快了或者太难看了.. 我原来使用Activi ...

最新文章

  1. IPK僵尸网络 看看其传播手法
  2. 如何使用HTML5,CSS3和PHP创建一个联系表格
  3. wxWidgets:拖放样本
  4. Apollo核心概念
  5. 数据库视频(二)——增删改查
  6. 《netty实战》阅读笔记(2)——Netty 的数据容器ByteBuf
  7. python设置本机IP地址、子网掩码、DNS,获取本机IP地址、子网掩码、DNS、MAC
  8. python 压力测试小 demo
  9. JQuery 登录,记住密码,密码小眼睛
  10. 使用idea的maven插件自动打jar包
  11. 微信公众号从入门到入坑
  12. 用K-Means聚类分析做客户分群
  13. Linux radius客户端,FreeRadius客户端基础配置及测试
  14. Oracle RAC详解
  15. Win8+CentOS7双系统安装
  16. pil.unidentifiedimageerror: cannot identify image file
  17. VVC多用途视频编码标准综述与应用1
  18. uIP中国的协议文件:Ch01
  19. 我也来读jquery
  20. 2020最新C#顺丰丰桥平台下单接口

热门文章

  1. Ubuntu 安装arm-linux-gcc交叉编译工具
  2. 2021大同高考成绩查询,大同高考分数查询(查询方法+入口)
  3. linux audio(alsa)驱动注册的简明流程.
  4. VFS之基本数据结构
  5. Android中的USB中的UsbAccessory和UsbDevice的区别
  6. iOS camera 相关
  7. SpringBoot之Idea不显示项目文件夹
  8. Hls之http协议实现
  9. nand flash和nor flash区别_从闪存的发展历史看,eMMC与NAND Flash有什么区别与联系?...
  10. python封装成exe后运行失败_python 在编译成EXE 文件后报错 我实在是找不出原因