函数

定义和调用

//定义
function  函数名($形参1,2,3...){
  //函数体
  return 返回值;
}
//调用
函数名($实参1,$实参2);

字符串内不能调用函数。

可变函数

可变函数: 一个函数的名是一个变量。

举例: 变量名代替函数

function f1($x,$y){
    return $x * $y;
}
$func1 = "f1"; 
echo $func1(10,2); //这就是可变函数

匿名函数

匿名函数是没有名字的函数。

没有名字怎么调用? 两种形式

  1. 将一个匿名函数“赋值”给一个变量,这个变量就代表了匿名函数
  2. 直接将一个匿名函数,当实参使用

匿名函数赋值给变量:

$fun1 = function (){
    echo 'hello world';
};  //不要忘记`;`
$fun1();

匿名函数作实参举例:

function func1($x,$y,$z){
    $s1 = $x + $y;
    $s2 = $x - $y;
    $z($s1, $s2);
}
//调用
func1(3,4, function ($m1, $m2){
   echo "m1=$m1,m2=$m2";
});
//得到m1=7,m2=-1

相关的系统函数

function_exsits(): 判断函数是否被定义过。

if(function_exists("func1") == false){
    function func1(){
        echo "hello";
    }
}
func1(); //使用

func_get_arg():返回参数列表的某一项

<?php
function foo()
{
     $numargs = func_num_args();
     echo "Number of arguments: $numargs<br />\n";
     if ($numargs >= 2) {
         echo "Second argument is: " . func_get_arg(1) . "<br />\n";
     }
}
foo (1, 2, 3);
?>

func_get_args():返回一个包含函数参数列表的数组

<?php
function foo()
{
    $numargs = func_num_args();
    echo "Number of arguments: $numargs<br />\n";
    if ($numargs >= 2) {
        echo "Second argument is: " . func_get_arg(1) . "<br />\n";
    }
    $arg_list = func_get_args();
    for ($i = 0; $i < $numargs; $i++) {
        echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
    }
}
foo(1, 2, 3);
?>
输出:
Number of arguments: 3<br />
Second argument is: 2<br />
Argument 0 is: 1<br />
Argument 1 is: 2<br />
Argument 2 is: 3<br />

func_num_args():

function foo()
{
     $numargs = func_num_args();
     echo "Number of arguments: $numargs<br />\n";
     if ($numargs >= 2) {
         echo "Second argument is: " . func_get_arg(1) . "<br />\n";
     }
}

foo (1, 2, 3);