1
2
3
4
5
6
7
8
9
10
11

自定义函数

发布时间:2017-07-20 07:57   发布人:毛书朋   浏览次数:6213


关联课件: 4子项目四 - 自定义函数(点击在线预览)



4.3.6  自 定 义 函 数

       在程序的编写过程中往往会有一些要反复用到的功能模块,如果每次都要重复编写这些代码,不仅浪费时间,而且还会使程序变得冗长、可读性差,维护起来也很不方便。PHP允许程序设计者将常用的流程或者变量等,组织成一个固定的格式。也就是说用户可以自行组合函数或者是类。这样在编写好函数或类之后,在使用时就不必关心其中的细节,拿过来就可以用。要做功能修改时,只需修改函数中的内容即可。下面就来看看自定义函数的定义与使用。

       PHP中的函数分为内置函数和用户自定义函数两大类。有关内置函数的知识将在第5章中详细讲解,下面就自定义函数进行讲解。

4.3.6.1  函数的定义与调用

      PHP中的函数与C语言中的函数类似。函数定义的语法为:

function函数名(形式参数列表){

          函数体;

          return返回值;

}

       PHP中的函数可以有返回值,也可以没有返回值。在函数的名称上,PHP对于大小写的管理比较松散。可以在定义函数时写成大写的名字,而在使用时使用小写的名字。不过,PHP对用户自定义函数的函数名也是有一些具体的要求。

①不能与PHP的内部函数同名。

②不能与PHP的关键字重名。

③不能以数字或下划线开头。

④不能包含点号“.”和中文字符。

       函数体是实现函数功能的语句体。函数体中即使只有一条语句,外面的大括号也不能省略。

       函数调用的语法为:

函数名(实际参数列表);

       实际参数列表要与形式参数列表相对应(有默认参数时,实际参数还要与默认参数对应)。如果实际参数比形式参数多,多余的参数会被自动舍弃;如果实际参数比形式参数少,实际参数会被一一填入形式参数中,不足部分以空参数代替。实际参数和形式参数之间的传递机制会在3.6.2节中详细讲述。

      如果函数有返回值,还可以利用函数调用为变量赋值,其语法为:

变量=函数名(实际参数列表);

程序4-22.php函数的定义和调用的示例。

<!--文件4-22.php:函数的定义和调用=>求阶乘-->
<HTML>
<HEAD>
    <TITLE>函数的定义和调用=>求阶乘</TITLE>
</HEAD>
<BODY>
    <?php
        function factorial($n)
        {
            $result=1;
            for ($i=2;$i<=$n;$i  )
                $result*= $i;
            return $result;
        }
        for ($i=1;$i<=6;$i  )
        {
            $num=factorial($i);
            echo $i."!=".$num."<br>";
        }
    ?>
</BODY>
</HTML>

程序4-22.php的运行结果如图4-19所示。

4-19.jpg

图4-19  程序4-22.php的运行结果

4.3.6.2  参数传递

       在调用函数时,要填入与函数形式参数个数相同的实际参数(有默认参数的除外),在程序运行过程中,实际参数就会传递给相应的形式参数,然后在函数中实现对数据的处理和返回。实际参数向形式参数传递的过程中,共有值传递、引用传递、默认参数3种机制。


1. 值传递

       值传递就是将实际参数的值拷贝到形式参数中,然后使用形式参数在函数内部进行运算,函数调用结束后,实际参数的值不会发生改变。

      用这种方式调用的函数一般都有返回值或输出值,否则函数调用没有实际意义。程序4-22.php中就是使用的这种传递方式。


2. 引用传递

       如果要实现形式参数改变时实际参数也发生相应的改变,就要使用引用传递的方式。参数的引用传递也有两种方法。

(1)定义函数时,在形式参数前面加上“&”符号,如:

function fun(&$var1){……}

(2)函数调用时,在实际参数前面加上“&”符号,如:

function fun($var1){……}

fun(&$var2)

如果形式参数$var1的值在函数中发生改变,实际参数$var2的值也会发生相应的改变。


3. 默认参数

      PHP还支持有默认值的参数,即定义函数时可以为一个或多个形式参数指定默认值。

程序4-23.php为函数的参数传递的3种方式举例。

<!--文件4-23.php:函数参数的传递-->
<HTML>
<HEAD>
    <TITLE>函数参数的传递</TITLE>
</HEAD>
<BODY>
    <?php
        function myfun1($var1)
        {   //值传递测试函数
            $var1=88;
        }
        function myfun2(&$var1)
        {   //第一种引用传递测试函数
            $var1=88;
        }
        function myfun3($string,$color="red")
        {   //默认参数传递测试函数
            echo "<font color=".$color.">".$string."</font>";
        }

        $var1=66;
        $string="这是红色字体!";

        echo "初始值:$var=".$var1."<br>";

        myfun1($var1);
        echo "值传递结束后:$var=".$var1."<br>";

        myfun2($var1);
        echo "第一种引用传递结束后:$var=".$var1."<br>";

        echo "默认参数的效果为:";
        myfun3($string);
    ?>
</BODY>
</HTML>

程序4-23.php的运行结果如图4-20所示。

4-20.jpg

图4-20  程序4-23.php的运行结果

4.3.6.3  变量函数

     PHP支持变量函数的概念,可以方便地利用变量实现对函数的调用。使用的基本格式为:

function fun(){……}

$var="fun";

$var();

       其中$var();就相当于调用函数fun(),$var()为可变函数。可变函数与普通函数调用时的最大区别就在于可变函数前面有"$",有此符号,系统就会认为是可变函数。

程序4-24.php为变量函数的示例。

<!--文件4-24.php:变量函数-->
<HTML>
<HEAD>
    <TITLE>变量函数</TITLE>
</HEAD>
<BODY>
    <?php
        function myfun()
        {
            return "变量函数执行成功!";
        }
        $var="myfun";
        echo $var();
        echo "<br>";
        $var="myfun()";
        echo $var;
    ?>
</BODY>
</HTML>

程序4-24.php的运行结果如图4-21所示。

4-21.jpg

图4-21  程序4-24.php的运行结果



  • 赵博文 2018-01-07 16:02:25
    PHP加密和解密函数可以用来加密一些有用的字符串存放在数据库里,并且通过可逆解密字符串,该函数使用了base64和MD5加密和解密。 function encryptDecrypt($key, $string, $decrypt){ if($decrypt){ $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "12"); return $decrypted; }else{ $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key)))); return $encrypted; } }
  • 赵博文 2018-01-07 16:02:54
    使用方法如下: //以下是将字符串“Helloweba欢迎您”分别加密和解密 //加密: echo encryptDecrypt('password', 'Helloweba欢迎您',0); //解密: echo encryptDecrypt('password', 'z0JAx4qMwcF+db5TNbp/xwdUM84snRsXvvpXuaCa4Bk=',1);
  • 岳猛 2018-01-09 16:23:23
    讲的条理清晰,听起来非常的流畅
  • 甄丹丹 2018-01-09 16:29:48
    这些语法基础对于刚学习PHP的人来说是非常重要的,条理清晰,方便学习
  • 李倩文 2018-01-10 11:57:22
    在调用函数时,要填入与函数形式参数个数相同的实际参数(有默认参数的除外),在程序运行过程中,实际参数就会传递给相应的形式参数,然后在函数中实现对数据的处理和返回。实际参数向形式参数传递的过程中,共有值传递、引用传递、默认参数3种机制。