PHP

PHP 知识量:7 - 20 - 67

3.1 函数的定义><

函数的语法- 3.1.1 -

下面通过一个简单的示例解释一下php函数的基本语法。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>index</title>
    </head>
    <body>
        <?php
        function show() {
            echo "hello!";
        }
        function showName($name) {
            echo "hello $name!";
        }
        show();
        showName("john");
        ?>
    </body>
</html>

php的函数主要由以下几个部分组成:

  1. 以保留字(或者称关键字)“function”开头。

  2. function后跟一个自定义变量名作为函数的名称。函数的名称可以由字母、数字和下划线组成,但是第一个字符必须是字母或下划线。示例中为“show”和“showName”。

  3. 一个小括号“()”,里面可以设置要传递给函数的参数,也可以不设置。示例中“show”没有设置参数,“showName”的参数为“$name”。

  4. 由大括号“{}”定义的函数体,函数体内是函数要执行的代码。示例中函数要执行的操作均是显示问候语句,其中,“showName”根据参数显示问候的对象。

php函数的调用也十分简单,只需要通过函数名加一个括号即可。以上示例中,调用函数show使用了show(),调用函数showName使用了showName(),括号内是要传递的参数“john”。

参数传递- 3.1.2 -

可以向php函数传递多个参数,php会按照参数的顺序自动匹配。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>index</title>
    </head>
    <body>
        <?php
        function numberList($a, $b, $c) {
            echo "$a,";
            echo "$b,";
            echo "$c.<br>";
            $sum = $a + $b + $c;
            echo "$a+$b+$c=$sum";
        }
        numberList(1, 2, 3);
        ?>
    </body>
</html>

以上代码中,定义了一个包含3个参数的函数numberList,它要完成的工作是显示传入的参数,并计算和显示它们的和。调用函数时分别传递了1、2、3这3个数字,它们按照传递的顺序依次被对应给$a、$b、$c,然后进行相应的显示和计算。

参数默认值- 3.1.3 -

php函数参数可以设置默认值,当调用函数时,如果没有传递参数,函数会使用默认值作为参数的值。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>index</title>
    </head>
    <body>
        <?php
        function numberList($a = 1, $b = 2, $c = 3) {
            echo "$a,";
            echo "$b,";
            echo "$c.<br>";
            $sum = $a + $b + $c;
            echo "$a+$b+$c=$sum<br>";
        }
        numberList();
        numberList(4, 5, 6);
        ?>
    </body>
</html>

以上代码中,通过赋值语句分别设置了函数3个参数的默认值,其中$a = 1, $b = 2, $c = 3
。第一次调用函数时,没有给出参数,函数就会使用默认值进行显示和计算。第二次调用函数时,给出了参数“4、5、6”,它们会替换(覆盖)默认参数值,结果就会显示“4、5、6”并计算它们的和为15。

传值与传引用- 3.1.4 -

通常情况下,定义一个变量,然后通过变量作为参数传递给函数,其所传递的只是变量的值,并不是变量本身,函数体内对参数值的操作不会影响函数外的变量,这叫做传值。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>index</title>
    </head>
    <body>
        <?php
        $number = 1;
        function addOne($a) {
            $a = $a + 1;
            echo "$a<br>";
        }
        addOne($number);
        echo "$number";
        ?>
    </body>
</html>

以上代码中,定义了一个变量$number并赋值为1。然后定义了一个函数addOne,它接收一个参数$a,对$a加1后显示结果。调用函数时,将$number作为参数传递给了函数addOne,$number的值将对应给$a。执行后将显示结果“2”,而$number的值没有受函数计算影响,它仍然显示为1。

如果我们想让函数内部的计算影响外部变量(该变量曾作为参数传递给函数),可以对变量进行传引用操作,也就是真的将变量本身传递给函数。实现的方法就是在变量前加“&”。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>index</title>
    </head>
    <body>
        <?php
        $number = 1;
        function addOne(&$a) {
            $a = $a + 1;
            echo "$a<br>";
        }
        addOne($number);
        echo "$number";
        ?>
    </body>
</html>

以上代码的不同之处在于,定义函数参数时前面加上了一个“&”,将“$a”变为“&$a”,这样调用函数后,$number的值也会变为2。

返回值- 3.1.5 -

php函数可以返回值,也可以什么都不返回,这取决于函数的设计功能。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>index</title>
    </head>
    <body>
        <?php
        function addOne($a) {
            $a = $a + 1;
            return $a;
        }
        function show($what) {
            echo "$what";
        }
        show(addOne(5));
        ?>
    </body>
</html>

以上代码中,分别定义了两个函数,函数addOne会通过return语句返回参数加1的结果,函数show则不返回任何值,而是在页面上打印参数的值。通过show(addOne(5))一次性调用了这两个函数,其中函数addOne的返回值作为参数传递给了函数show。