PHP定义函数

在编写函数时首先要明白我们希望函数做什么,知道这一点后,编写起来便不会太困难了。

PHP 中除了已经给我们提供了数以千计的系统函数之外,还可以根据开发的需要来自定义函数。所谓的系统函数是就在 PHP 中提供的可以直接使用的函数,每一个系统函数都是一个完整的可以完成指定任务的代码段。

在开发时,一些常用的功能可以借助调用系统函数来完成。但是如果某些功能在 PHP 中没有提供系统函数的话,就需要我们自己来定义函数了。完成同样的任务,使用系统函数的执行效率会比自定义函数高,但两种函数在程序中的调用方式是没有区别的。

函数的定义

在 PHP 中声明一个自定义的函数可以使用下面的语法格式:

function 函数名 (参数1, 参数2, ..., 参数n){
    函数体;
    return 返回值;
}

函数的语法格式说明如下:
  • 每个函数的第一行都是函数头,由声明函数的关键字 function、函数名和参数列表三部分组成,其中每一部分完成特定的功能;
  • 每个自定义函数都必须使用 function 关键字声明;
  • 函数名可以代表整个函数,可以将函数命名为任何名称,只要遵循变量名的命名规则即可。每个函数都有唯一的名称,但需要注意的是,在 PHP 中不能使用函数重载,所以不能定义重名的函数,也包括不能和系统函数同名;
  • 声明函数时函数名后面的小括号“()”也是必须有的,在小括号中包含了一组可以接受的参数列表,参数就是声明的变量,然后在调用函数时可以将变量传递给函数。参数列表可以为空,也可以有一个或多个参数,多个参数之间使用逗号分隔;
  • 关键字“function”与函数名之间需要使用空格分隔开,而函数名与包裹参数列表的小括号之间不需要使用空格分隔,当然加上空格也不会出错;
  • 函数体位于函数头后面,需要使用大括号“{}”包裹起来。函数的所用工作都是在函数体中完成的。函数被调用后,首先执行函数体中的第一条语句,执行到 return 语句或最外面的大括号“}”后结束,返回到调用函数的地方。函数体中可以使用任何有效的 PHP 代码,甚至是其他的函数或类的定义也可以在函数体中声明;
  • 使用关键字 return 可以从函数中返回一个值或者表达式,程序执行到 return 语句时,该表达式将被计算,然后返回到调用函数的地方继续执行。

因为参数列表和返回值在函数定义时都不是必须的,而其他的部分是必须有的,所以声明函数时通常有以下几种方式。

1) 在声明函数时可以没有参数列表:

function 函数名(){
    函数体;
    return 返回值;
}

2) 在声明函数时可以没有返回值:

function 函数名(参数1, 参数2, ..., 参数n){
    函数体;
}

3) 在声明函数时可以没有参数列表和返回值:

function 函数名(){
    函数体;
}

函数的调用

不管是自定义的函数还是系统函数,如果函数不被调用,就不会执行。只要在需要使用函数的位置,使用函数名称和参数列表进行调用即可。

函数被调用后开始执行函数体中的代码,执行完毕返回到调用的位置继续向下执行。所以在函数调用时函数名称可以总结出以下三个作用。
  • 通过函数名称可以调用函数,并让函数体的代码运行,调用几次函数体就会执行几次;
  • 如果函数有参数列表,还可以通过在函数名后面的小括号中传入对应的值给参数,在函数体中使用参数来改变函数内部代码的执行行为;
  • 如果函数有返回值,当函数执行完毕时就会将 return 后面的值返回到调用函数的位置,这样就可以把函数名称当做函数返回的值使用。

提示:只要声明的函数在脚本中可见,就可以通过函数名在脚本的任意位置进行调用,在 PHP 中可以在函数的声明之后调用,也可以在函数的声明之前调用,还可以在函数中调用函数。

【示例】将我们讲解 for 循环时打印九九乘法表的程序封装到函数中,代码如下所示:
<?php
    function table(){       //定义函数
        for ($i = 1; $i <= 9; $i++) {
            for ($j = 1; $j <= $i; $j++) {
                echo $j.' * '.$i.' = '.$i*$j.'&nbsp;&nbsp;';
            }
            echo '<br>';
        }
    }

    table();//调用函数
?>
运行结果如下:

1 * 1 = 1 
1 * 2 = 2  2 * 2 = 4 
1 * 3 = 3  2 * 3 = 6  3 * 3 = 9 
1 * 4 = 4  2 * 4 = 8  3 * 4 = 12  4 * 4 = 16 
1 * 5 = 5  2 * 5 = 10  3 * 5 = 15  4 * 5 = 20  5 * 5 = 25 
1 * 6 = 6  2 * 6 = 12  3 * 6 = 18  4 * 6 = 24  5 * 6 = 30  6 * 6 = 36 
1 * 7 = 7  2 * 7 = 14  3 * 7 = 21  4 * 7 = 28  5 * 7 = 35  6 * 7 = 42  7 * 7 = 49 
1 * 8 = 8  2 * 8 = 16  3 * 8 = 24  4 * 8 = 32  5 * 8 = 40  6 * 8 = 48  7 * 8 = 56  8 * 8 = 64 
1 * 9 = 9  2 * 9 = 18  3 * 9 = 27  4 * 9 = 36  5 * 9 = 45  6 * 9 = 54  7 * 9 = 63  8 * 9 = 72  9 * 9 = 81 

【示例】下面我们来定义一个函数,来实现简单的加法运算,代码如下所示:
<?php
    function add($num1,$num2){
        $a = $num1 + $num2;
        return $a;
    }

    $sum = add(11,5);
    echo '$sum = '.$sum.'<br>';
    echo '6 + 33 ='.add(6,33).'<br>';
    echo '42 + 21 ='.add(42,21).'<br>';
    echo '167 + 153 ='.add(167,153);
?>
运行结果如下:

$sum = 16
6 + 33 =39
42 + 21 =63
167 + 153 =320