Heim > php教程 > php手册 > Hauptteil

PHP函数介绍

WBOY
Freigeben: 2016-06-13 08:50:40
Original
1163 Leute haben es durchsucht

PHP函数介绍

基本使用:

 

函数定义形式:

        function 函数名(形参1,形参2,...) {

            //函数体(代码块);

        }

    函数调用形式:

        本质上就是使用一个名字来达到执行其中函数中的的作用。通常可以分两种情形的调用:

        第一种:没有返回值的函数,则调用语句是独立语句

            函数名(实参1,实参2,...); //实参个数应该跟形参有匹配性

 

        第二种:有返回值的函数,则调用语句,通常会“混杂”在别的语句中,并将该调用语句当作一个“数据”来使用:

            A: $v1 = 函数名(); //赋值给其它变量,这里省略实参语法,下同

            B: $v1 = 函数名()*3+6; //参与运算,然后再赋值

            C: echo 函数名(); //直接输出

            D: echo 函数名()*3+6; //参与运算,然后再输出

            E: $v1 = 函数名2(函数名(),实参2,实参3,...); //当作实参使用

 

函数调用流程分析:

    开始调用:实际参数传数据给形式参数

    程序执行流程进入到函数中(一个独立的运行空间),跟全局执行空间是隔离的

    按常规的程序逻辑执行函数中的代码

    如果碰到return语句,则终止函数的执行,跳回函数开始调用的位置

    如果执行到函数的最后位置,也同样跳回函数开始调用的位置

其运行流程原理图如下:

函数参数问题:

    一个函数,

    在定义时,有形式参数(形参:parameter)

        1:形参一定是一个变量名,

        2:该变量名只能是在该函数中有效的变量名,

        3:而且只在该函数调用并执行时有效,函数结束,通常这些变量也就“销毁”

    在调用时有实际参数(实参:arguemet)

        实参就是一个“实际数据”,该数据可以是一个“直接数据”(比如5,"abc"),也可以是一个变量中存储的数据。

        实参的作用是将其数据”赋值给“形参变量

        实参跟形参之间通常应该有个“一一对应”关系

 

    默认值参数:

        定义一个函数的时候,在形式参数的位置,可以给形式参数设定默认值,此时就可以称为默认值参数。比如:

    

注意:

    默认值不能是对象或资源类型

    默认值只能是常量表达式,或常量,不能是变量

即:如下语法是正确的:function f1($v = 3) {}, function f1($v = __LINE__) {},

    如下语法是错误的:function f1($v = 3+1) {} , $m = 3,function f1($v = $m) {},

 

函数的参数传值问题:

    实际上,函数的参数传值问题,跟变量之间的传值是一样的规则(模式):默认是值传递。

    如果实参本身就是“直接数据”,则不存在传值问题,而是简单的“赋值”

    传值问题只发生在实参是变量的情形:

    我们也可以让某个参数(形参)以引用传递的方式来传值:

    引用传递的形参(实参),在函数内部改变其值,在函数外面的实参,也会相应做修改

    注意:如果某个形参设定为引用传递,此时,实参只能使用变量,否则会出现语法错误,如:

 

参数的数量问题:

    1:函数的参数的数量可以是0个或多个 -- 具体多少个,不是语法问题,而是应用问题

    2:通常,实际参数的数量应该跟形式参数的数量一致

    3:但是,在第二条的基础上,如果形式参数中有默认值,则实际参数的对应项可以少省略    

        即:实参的个数,至少应该不少于形参中的非默认值参数的个数

 

但:我们还有一种特殊的处理函数参数的用法:自由参数数量

    定义时可以不给定形参,但调用时,却又可以给定任何个数的实参

在系统中,var_dump()这个函数也有同样的使用效果:

    $var_dump($v1);

    var_dum($v1,$v2,$v3);  //这样也是可以的

这种应用的实现,是依赖于系统中的3个系统函数来达到的:

    func_get_args();    //获得一个函数的接收到的所有实参数据,并结果是一个数组

    func_get_arg(n);    //获得一个函数所接收到的第n个实参数据(n从0开始)

    func_num_args();    //获得一个函数所接收到的所有实参数据个数

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!