定义
任何有效的 PHP 代码都有可能出现在函数内部,甚至包括其它
函数
和类
定义。
函数名和 PHP 中的其它标识符命名规则相同。有效的函数名以字母或下划线打头,后面跟字母,数字或下划线。
一般情况下,函数无需在调用之前被定义,除非是下面两个例子。
- 有条件函数
$is_fun = true;
fun() // 错误,因为函数是有条件被定义的
bar() // 可以正确调用
if ($is_fun ) {
function fun() { }
}
function bar(){}
- 函数中函数
bar() //错误的调用,因为bar在foo里面,foo没调用之前bar是不存在的。
foo() //正确
bar() //现在可以正确的 调用bar()了,运行了foo后,bar也被创建了。
function foo()
{
function bar(){ }
}
作用域|规则
PHP 中的所有函数和类都具有全局作用域,可以定义在一个函数之内而在之外调用,反之亦然。
函数名是不区分大小写的。Foo()
和foo()
是同一函数。
PHP 不支持函数重载,也不可能取消定义或者重定义已声明的函数。
关于递归函数
递归函数常用的方案是传递一个引用,来实现树结构。也用来遍历一个多维数组等。
递归函数超过200层,将会抛出错误,无限递归也被视为编程错误!
<?php
function foo($a)
{
if ($a < 20) {
foo($a + 1);
}
}
?>