PHP函数(function)
函数基础
函数的定义:
形式:
function  函数名 ( 【$形参1】 【,$形参2】 【,.... 】  ){
//函数体。。。。。。
}
说明:
1,定义时使⽤的形参,其实就是⼀个变量——只能在该函数内部使⽤的变量
2,形参作为变量,其名字是“⾃⼰定义”——⾃然应该遵循命名规范;
函数的调⽤:
函数名($实参1, $实参2, ..... );
说明:
1,实参应该跟要调⽤的函数的形参“⼀⼀对应”;
2,实参就是“数据值”,可能是直接值(⽐如5,”abc”),也可能是变量值(⽐如$v1)
函数调⽤详细过程
1,⾸先,将函数调⽤时的实参数据,传递(赋值)给函数的形参(变量);
2,程序的执⾏流程,进⼊到函数内部——此时可以认为是⼀个跟外界“隔离” 的“独⽴运⾏空间”。3,在函数内部,按正常的流程顺序,执⾏其中的代码;
4,直到函数结束,则退出该运⾏空,⽽返回到原来调⽤函数的位置,继续执⾏后续代码!
5,如果在函数内部执⾏的过程中,有return语句,则也会⽴即终⽌函数,并回到函数调⽤位置。
函数的参数问题
函数形参的默认值问题
我们可以给⼀个函数定义时的形参,赋值⼀个“默认值”,则这个函数调⽤的时候,该形参对应的实参,可以不给值。
函数形参的默认值,可以只给部分形参设置默认值,但设置默认值性的形参,都要放在“右边”(后边):
形参的传值问题
⼀句话:形参的传值问题,其实就是“变量之间的传值问题”:
其实⽆⾮就是实参变量,传值给形参变量的问题。
即:
此时,也同样有两种传值⽅式:
值传递:
这是默认值。如果没有特别设定,参数传值都是值传递。
引⽤传递:
需要在形参的前⾯加 &符号:
函数参数的数量问题
1,通常,函数调⽤时的实参数量,应该跟函数定义时的形参数量保持⼀致。
2,如果函数定义时,形参有默认值,则对应的实参就可以进⾏⼀定程度的省略:
注意:省略只能从右往左进⾏。
3,有⼀种定义和使⽤函数的特别形式(并不常见):它不定义形参,⽽实参任意给出。
php延时函数其实,系统中也有类似的函数:,⽐如:
var_dump($v1);
var_dump($v1, $v2, $v3);    //ok!
可见,该函数就可以接受任意个数的实参;
我们⾃⼰也可以定义这种函数。其实,这种函数,依赖的是以下3个系统函数来获取相应的信息,以得到实参数据的处理:1: func_get_args(); //获取实参数据列表,成为⼀个数组
2: func_get_arg($i);      //获取第$i个实参数据,$i从0开始算起;
3:func_num_args();    //获取实参的数量(个数)
下⾯就是例⼦:
函数的返回值问题
⼀个观念问题:
函数的返回值,不是语法规定,⽽是应⽤所需:需要就返回,不需要就⽆需返回。
返回值,⼀定是通过return语句!
形式:
function 函数名(....)
{
//。。。。。。
return  XX数据;
}
注意:
return语句的作⽤,不管后⾯跟不跟数据值,都会⽴即终⽌函数的执⾏,返回到函数调⽤的位置并继续后续⼯作。
函数的其他形式:
可变函数
先想想可变变量:
$v1 =”abc”;
$abc = 123;
echo  $$v1;  //输出123,这就是所谓的可变变量。
可变变量:⼀个变量的名字还是⼀个变量!
可变函数:⼀个函数的名字是⼀个变量!
演⽰可变函数的⼀个灵活性使⽤:
匿名函数
匿名函数就是没有名字的函数。
有2种形式的匿名函数:
形式1:将⼀个匿名函数“赋值”给⼀个变量——此时该变量就代表该匿名函数了!
形式2:
是直接将⼀个匿名函数,当做“实参”来使⽤!——即调⽤“别的函数A”的时候,使⽤⼀个匿名函数来当做实参。⾃然,在该函数A中,也就应该对该匿名函数当做⼀个函数来⽤!
变量的作⽤域问题
变量的作⽤域,就是指:⼀个变量,在什么范围中可以使⽤的情况。
php中,有3中变量作⽤域:
局部作⽤域:
就是指⼀个函数的内部范围。
对应这样的变量,就称为“局部变量”;
超全局作⽤域:
就是指所有的代码范围。
对应这样的变量,就称为“超全局变量”;
其实只有系统预定义的⼏个:$_GET, $_POST, $_SERVER, $_REQUEST, $GLOBALS, $_SESSION, $_COOKIE, $_FILES 全局作⽤域:
就是不在函数内部的范围——函数外部。
对应这样的变量,就称为“全局变量”;
通常,
1,全局范围不能访问局部变量;
2,局部范围不能访问全局变量;
3,函数内部的变量(局部变量),通常在函数调⽤执⾏结束后,就被“销毁”了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。