我是靠谱客的博主 悦耳可乐,这篇文章主要介绍PHP函数及作用域知识详解,现在分享给大家,希望可以做个参考。

本篇文章给大家带来了关于PHP的相关知识,其中主要介绍了关于函数以及作用域的相关问题,包括了函数命名规范、函数返回值、可变函数、匿名函数等等内容,下面一起来看一下,希望对大家有帮助。

推荐学习:《PHP视频教程》

一、基本概念


二、基本语法

基本语法如下:

复制代码
1
2
3
4
5
Function 函数名([参数]){ //函数体,基本上所有的代码都可以实现,定义变量、定义常量、使用流程控制(分支、循环)、可以调用函数。 //返回值:return 结果; }
登录后复制

定义函数的目的:是为了实现代码的重复利用,一个功能一个函数(简单明了)。

函数是在代码执行阶段,碰到函数名字的时候才会调用,不是在编译阶段。函数的调用特点:只要系统在内存中能够找到对应的函数,就可以执行(函数的调用可以在函数定义之前)

函数执行的内存分析:


三、函数命名规范


四、形参和实参

复制代码
1
2
3
4
5
6
7
8
9
10
<h3>函数参数形参和实参</h3> <?php header("Content-type:text/html;charset=gbk"); //定义函数 function jia($a,$b){ //形参可以有多个,逗号,隔开 echo $a + $b;//函数体使用形参运算 }; $num = 10;//定义实参 jia($num,2);//传入实参,实参可以是变量、常量、运算结果等 ?>
登录后复制


五、形参默认值

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
<h3>形参默认值</h3> <?php header("Content-type:text/html;charset=gbk"); $a = 10;//定义实参 //定义函数 function jia($a = 6,$b = 4){ //此时$a是实参,编译不执行,属于jia函数内部,跟外面的$a=10不冲突。 echo $a + $b;//10 + 4 = 14 }; jia($a);//调用$a,有传参就是10,$b是4,所以值就是14 echo "<hr/>"; echo $a;//10 ?>
登录后复制

注意:默认值的定义是放在最右边的(多个),不能左边形参有默认值,但是右边没有函数外部定义的变量名字与函数定义的形参名字冲突(同名)是没有任何关联关系的;如果多个函数使用同样的形参名字也不冲突。


六、实参引用传递

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
<h3>引用传递</h3> <?php header("Content-type:text/html;charset=gbk"); function xiao($x,&$y){ //定义函数xiao() $x = $x * $x; $y = $y * $y; //修改两个形参的值 echo $x;echo "<hr>";echo $y,"<hr>"; }; $x = 4;$y = 2;//定义变量 xiao($x,$y); echo $x,"<hr>",$y,"<hr>"; ?>
登录后复制

思考:两者对比,为什么第二个y变成了4?

参考:php——三篇夯实根基第一篇_xiaochuhe.的博客-CSDN博客里面的变量引用赋值。

注意:引用传值注意事项:在传入实参的时候,必须传入变量!!!


七、函数返回值(return)

复制代码
1
2
3
4
5
6
7
8
9
<h3>函数返回值</h3> <?php header("Content-type:text/html;charset=gbk"); function chuhe(){//定义函数 echo __FUNCTION__;echo '<hr/>';//输出当前函数的名称 echo __FILE__;echo '<hr/>';//输出当前文件名的绝对路径 }; //chuhe();echo '<hr>'; var_dump(chuhe());
登录后复制

返回值作用:将计算结果返回给调用处,并且函数的返回值可以是任意数据类型

复制代码
1
2
3
4
5
6
7
8
9
<h3>函数返回值——Retrun</h3> <?php header("Content-type:text/html;charset=gbk"); function jia($x,$y){ return $x + $y;//return直接结束jia函数 echo $x; //注意,此时echo函数不执行 }; $num =jia(4,5);//9 echo $num;
登录后复制


八、作用域

1.全局变量

复制代码
1
2
3
4
5
6
7
8
9
<h3>全局变量</h3> <?php header("Content-type:text/html;charset=gbk"); $global = "这是全局变量!"; //定义变量 function chuhe(){ $inner = __FILE__;//局部变量 echo $global; //肯定是报错的,函数内部肯定是访问不了全局变量滴 }; chuhe();//调用函数
登录后复制

2.局部变量

复制代码
1
2
3
4
5
6
7
8
9
10
<h3>局部变量</h3> <?php header("Content-type:text/html;charset=gbk"); $global = "这是全局变量!"; //定义变量 function chuhe(){ $inner = __FILE__;//局部变量 //echo $global; //肯定是报错的,函数内部肯定是访问不了全局变量滴 }; chuhe();//调用函数 echo $inner;//访问局部变量,也是报错的
登录后复制

3. 超全局变量

(1)内部调用外部

复制代码
1
2
3
4
5
6
7
8
9
<h3>超全局变量</h3> <?php header("Content-type:text/html;charset=gbk"); $global = "这是全局变量!"; //定义变量 function chuhe(){ $inner = __FILE__;//局部变量 echo $GLOBALS['global'];//讲全局变量纳入$GLOBALS里面 }; chuhe();//调用函数
登录后复制

(2)外部调用内部

复制代码
1
2
3
4
5
6
7
8
9
10
<h3>超全局变量</h3> <?php header("Content-type:text/html;charset=gbk"); $global = "这是全局变量!"; //定义变量 function chuhe(){ global $inner; //定义变量,使用全局变量。 $inner = __FILE__;//局部变量 }; chuhe();echo $inner;//调用函数,并访问局部变量
登录后复制

4.静态变量

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
<h3>静态变量</h3> <?php header("Content-type:text/html;charset=gbk"); function xiao(){ $a = 2;//定义变量 static $b = 3;//定义静态变量 echo $a++;echo "<hr>"; echo $b++;echo "<hr>"; }; xiao();//调用函数 xiao();//再调一次 xiao();//再调一次
登录后复制

静态变量的作用是为了跨函数共享数据(同一个函数被多次调用) 。


九、可变函数

复制代码
1
2
3
4
5
6
7
8
<h3>可变函数</h3> <?php header("Content-type:text/html;charset=gbk"); function chu(){ echo __FILE__;echo __FUNCTION__;echo __LINE__; } $xiao = "chu";//定义变量 $xiao();//调用可用函数
登录后复制

附加思考:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
<h3>可变函数</h3> <?php header("Content-type:text/html;charset=gbk"); function xiao($a,$b){ //假设定义系统函数 $b = $b + 6; return $a($b);//chuhe(16) } function chuhe($c){ return $c * $c * $c; //定义一个用户函数,求该函数的3次方 } echo xiao('chuhe',10);//16*16*16 echo "<br>","懵了吧,多想想就懂了!"; //懵了吧,多想想就懂了!!
登录后复制


十、匿名函数

复制代码
1
2
3
4
5
6
7
8
<h3>函数</h3> <?php header("Content-type:text/html;charset=gbk"); $xiaofeng = function(){ //定义匿名函数 echo "我是萧风!"; }; $xiaofeng();echo "<hr>";//调用匿名函数 var_dump($xiaofeng);//查案变量类型及内容
登录后复制


十一、闭包函数

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
<h3>闭包函数</h3> <?php header("Content-type:text/html;charset=gbk"); function xiaofeng(){ $inner = __FILE__;//定义局部变量 #定义匿名函数 $chuhe = function() use($inner){//用use讲局部变量保留给内部使用闭包 echo $inner; }; $chuhe();//调用函数 } xiaofeng();
登录后复制

思考:函数使用完后局部变量有没有被释放?

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
<h3>闭包函数</h3> <?php header("Content-type:text/html;charset=gbk"); function xiaofeng(){ $inner = __FILE__;//定义局部变量 #定义匿名函数 $chuhe = function() use($inner){//用use讲局部变量保留给内部使用闭包 echo $inner; }; return $chuhe();//返回内部匿名函数 } $closure = xiaofeng();//理论上局部变量inner已经释放了 $closure();
登录后复制


十二、伪类型

伪类型主要有两种:在三大类八小类之外


十三、常用系统函数

(一)关于输出的函数

(二)关于时间的函数

复制代码
1
2
3
4
5
6
7
<h3>时间函数</h3> <?php header("Content-type:text/html;charset=gbk"); echo date('Y 年 m 月 d 日 H:i:s',987654321);echo "<hr>"; echo time();echo "<hr>"; echo microtime();echo "<hr>"; echo strtotime(" 10 hours");
登录后复制

(三)关于数学的函数

(四)关于自定义函数的函数

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
<h3>自定义函数</h3> <?php header("Content-type:text/html;charset=gbk"); echo "<pre>"; function xiao($a,$b){ print_r(func_get_arg(1));echo "<hr>";//获取指定参数 print_r(func_get_args());echo "<hr>";//获取所有参数 print_r(func_num_args());;echo "<hr>";//获取参数数量 } xiao(1,2);//调用函数 echo "<br>"; function_exists('xiao') && xiao(1,'2');//在调用函数时,判断指定的函数名字是否在内存中存在(帮助用户不去使用一个不存在的函数,让代码安全性更高)
登录后复制

推荐学习:《PHP视频教程》

以上就是PHP函数及作用域知识详解的详细内容,更多请关注靠谱客其它相关文章!

最后

以上就是悦耳可乐最近收集整理的关于PHP函数及作用域知识详解的全部内容,更多相关PHP函数及作用域知识详解内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(129)

评论列表共有 0 条评论

立即
投稿
返回
顶部