PHP学习笔记(五):函数

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

function add($arg1,$arg2) {
    return $arg1+$arg2;
}
$result = add(3,4);

函数名和PHP中的其他标识符命名规则相同。Note:函数名是大小写无关的。
函数无需在调用之前被定义,除非是函数是有条件被定义的,当一个函数是有条件被定义时,其定义必须在调用之前先处理。
例:

$flag = true;
/*不能在此处调用foo()函数,因为它还不存在,但可以调用bar()函数。*/
bar();
if($flag){
    function foo() {
        echo "I don't exist until program reaches me.\n";
    }
}
/*现在可以安全调用函数foo()了,因为条件为真,函数被定义了*/
if ($flag) foo();
function bar() {
    echo "I exist inmediately upon program start.\n"
}

对于函数中的函数,同样是外层函数被调用以后,内层函数才可以被调用。
PHP中的所有函数和类都具有全局作用域,可以定义在一个函数之内而在之外调用,反之亦然。PHP不支持函数重载,也不可能取消定义或者重定义已声明的函数。
PHP中可以调用递归函数。但是要避免递归函数/方法调用超过100-200层,因为可能会使堆栈崩溃从而使当前脚本终止。
函数的参数
PHP支持按值传递参数(默认),引用传递参数以及默认参数(必须为常量表达式,不能是诸如变量,类成员,或者函数调用等。当使用默认参数时,任何默认参数都必须放在任何非默认参数的右侧;否则函数将不会按照预期工作。),也支持可变长度参数列表。
值传递(在函数内部改变参数的值,它并不会改变函数外部的值)。如果希望允许函数修改它的参数值,必须通过引用传递参数,即在此参数的 前面加上符号&。
返回值
值通过可选的返回语句返回。可以返回包括数组和对象的任意类型。返回语句会立即中止函数的运行,并且将控制权交回调用该函数的代码行。
函数不能返回多个值,但可以通过返回一个数组来得到类似的效果。
可变函数
PHP支持可变函数的概念,这意味着如果一个变量名后有圆括号,PHP将寻找与变量的值同名的函数,并且尝试执行它。
例:

function foo () {
    echo  "In foo()<br />\n" ;
}

function bar ( $arg = '' ) {
    echo  "In bar(); argument was ' $arg '.<br />\n" ;
}

 // 使用 echo 的包装函数
 function echoit ( $string ) {
    echo  $string ;
}

 $func  =  'foo' ;
 $func ();         // This calls foo()

 $func  =  'bar' ;
 $func ( 'test' );   // This calls bar()

 $func  =  'echoit' ;
 $func ( 'test' );   // This calls echoit()

内部(内置)函数

匿名函数
匿名函数(Anonymous Functions),也叫闭包函数(closures),允许临时创建一个没有指定名称的函数。最经常用做回掉函数(callback)参数的值。

你可能感兴趣的:(PHP,函数)