iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP函数及作用域的知识点有哪些
  • 209
分享到

PHP函数及作用域的知识点有哪些

2023-06-30 16:06:19 209人浏览 薄情痞子
摘要

这篇“PHP函数及作用域的知识点有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php函数及作用域的知识点有哪些”文章吧

这篇“PHP函数及作用域的知识点有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php函数及作用域的知识点有哪些”文章吧。

PHP函数及作用域的知识点有哪些

一、基本概念

函数:function,是一种语法结构,将实现某一个功能的代码块(多行代码)封装到一个结构中,从而实现代码的重复利用(复用)。


二、基本语法

函数有几个对应的关键点:function关键字、函数名、参数(形参和实参)、函数体和返回值。

基本语法如下:

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

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

PHP函数及作用域的知识点有哪些

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

函数执行的内存分析:

  • 读取代码进入到代码段(编译:将代码变成字节码存储到内存)

  • 根据代码逐行执行——编译和执行是分开的(先编译后执行)


三、函数命名规范

命名规范:由字母、数字和下划线组成,但是不能以数字开头。函数作为一种常用的结构,一般遵循以下规则:函数通常名字代表着函数的功能,而有些功能会比较复杂,可能一个单词不足以表达,需要多个组合。

  1. 驼峰法:除了左边第一个单词外,后面所有的单词首字母都大写:showParentInfo()

  2. 划线法:单词之间通过下划线连接,单词都是小写:show_parent_info()


四、形参和实参

形参:形式参数,不具有实际意义的参数,是在函数定义时使用的参数。

实参:实际参数,具有实际意义的参数,是在函数调用时使用的参数。

两者关系:形参是实参的载体:实参在调用时通常是需要传入到函数内部参与计算(运算),那么需要在函数内部去找到实际数据所在的位置才能找到数据本身:需要实际调用的时候,将数据以实参的形式传递给形参:给形参赋值,从而使得函数内部可以用到外部数据。

<h4>函数参数形参和实参</h4><?phpheader("Content-type:text/html;charset=gbk");//定义函数function jia($a,$b){  //形参可以有多个,逗号,隔开echo $a + $b;//函数体使用形参运算};$num = 10;//定义实参jia($num,2);//传入实参,实参可以是变量、常量、运算结果等?>

PHP函数及作用域的知识点有哪些

  • 在PHP中允许实参多余形参(个数):函数内部不用而已

  • 在PHP中理论上形参个数没有限制(实际开发不会太多)

  • 实参不能少于形参个数。

PHP函数及作用域的知识点有哪些


五、形参默认值

默认值:default value,指的是形参的默认值,在函数定义的时候,就给形参进行一个初始赋值:如果实际调用传入的参数(实参)没有提供,那么形参就会使用定义时的值来进入函数内部参与运算。通常默认值是用在一些,一定会有某个数据参与,但是可能通常是某个我们知道的值。

<h4>形参默认值</h4><?phpheader("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,所以值就是14echo "<hr/>";echo $a;//10?>

PHP函数及作用域的知识点有哪些

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


六、实参引用传递

实参在调用时会将值赋值给形参,那么实际上使用的方式就是一种简单的值传递:将实参(如果是变量或者常量或者其他表达式)的结果(值)取出来赋值给形参:形参与外部实际传入的参数本身没有任何关联关系:只是结果一样。有的时候,希望在函数内部拿到的外部数据,能够在函数内部改变,那么就需要明确告知函数(定义时),函数才会在调用的时候去主动获取外部数据的内存地址。以上这种定义形式参数的方式叫作引用传值。

基本定义语法:

Function 函数名(形参1,&形参2){

        //函数体

}

<h4>引用传递</h4><?phpheader("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>";?>

PHP函数及作用域的知识点有哪些PHP函数及作用域的知识点有哪些

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

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

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


七、函数返回值(return)

返回值:return,指的是将函数实现的结果,通过return关键字,返回给函数外部(函数调用处):在PHP中所有的函数都有返回值。(如果没有明确return使用,那么系统默认返回NULL。

<h4>函数返回值</h4><?phpheader("Content-type:text/html;charset=gbk");function chuhe(){//定义函数echo __FUNCTION__;echo '<hr/>';//输出当前函数的名称echo __FILE__;echo '<hr/>';//输出当前文件名的绝对路径};//chuhe();echo '<hr>';var_dump(chuhe());

PHP函数及作用域的知识点有哪些

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

<h4>函数返回值——Retrun</h4><?phpheader("Content-type:text/html;charset=gbk");function jia($x,$y){return $x + $y;//return直接结束jia函数echo $x; //注意,此时echo函数不执行};$num =jia(4,5);//9echo $num;

PHP函数及作用域的知识点有哪些

  • return在函数内部存在的价值:返回当前函数的结果(当前函数运行结束)

  • return还可以在文件中直接使用(不在函数里面):代表文件将结果return后面跟的内容,转交给包含当前文件的位置。(通常在系统配置文件中使用较多),在文件中也代表中终止文件后面的代码:return之后的内容不会执行。


八、作用域

作用域:变量(常量)能够被访问的区域

  • 变量可以在普通代码中定义

  • 变量也可以在函数内部定义

作用域分类:

  1. 全局变量

  2. 局部变量

  3. 超全局变量

1.全局变量

全局变量:就是用户普通定义的变量(函数外部定义)

所属全局空间:在PHP中只允许在全局空间使用:理论上函数内部不可方法

脚本周期:直到脚本运行结束(最后一行代码执行完)

<h4>全局变量</h4><?phpheader("Content-type:text/html;charset=gbk");$global = "这是全局变量!"; //定义变量function chuhe(){ $inner = __FILE__;//局部变量echo $global; //肯定是报错的,函数内部肯定是访问不了全局变量滴};chuhe();//调用函数

PHP函数及作用域的知识点有哪些2.局部变量

局部变量:就是在函数内部定义的变量

所属当前函数空间:在PHP中只允许在当前函数自己内部使用

函数周期:函数执行结束(函数是在栈区中开辟独立内存空间运行)

<h4>局部变量</h4><?phpheader("Content-type:text/html;charset=gbk");$global = "这是全局变量!"; //定义变量function chuhe(){ $inner = __FILE__;//局部变量//echo $global; //肯定是报错的,函数内部肯定是访问不了全局变量滴};chuhe();//调用函数echo $inner;//访问局部变量,也是报错的

PHP函数及作用域的知识点有哪些

3. 超全局变量

超全局变量:系统定义的变量(预定义变量:$_SERVER、$_POST等)

所属超全局空间:没有访问限制(函数内外都可以访问)

       超全局变量会将全局变量自动纳入到$GLOBALS里面,而$GLOBALS没有作用域限制,所以能够帮助局部去访问全局变量:但是必须使用数组方式。

(1)内部调用外部

<h4>超全局变量</h4><?phpheader("Content-type:text/html;charset=gbk");$global = "这是全局变量!"; //定义变量function chuhe(){ $inner = __FILE__;//局部变量echo $GLOBALS['global'];//讲全局变量纳入$GLOBALS里面};chuhe();//调用函数

PHP函数及作用域的知识点有哪些

(2)外部调用内部

<h4>超全局变量</h4><?phpheader("Content-type:text/html;charset=gbk");$global = "这是全局变量!"; //定义变量function chuhe(){global $inner; //定义变量,使用全局变量。$inner = __FILE__;//局部变量};chuhe();echo $inner;//调用函数,并访问局部变量

PHP函数及作用域的知识点有哪些

4.静态变量

静态变量:static,是在函数内部定义的变量,使用static关键字修饰,用来实现跨函数共享数据的变量:函数运行结束所有局部变量都会清空,如果重新运行一下函数,所有的局部变量又会重新初始化。

基本语法:

Function 函数名(){

        //定义变量

        Static $变量名 = 值;               //通常会在定义的时候就直接赋值

}

<h4>静态变量</h4><?phpheader("Content-type:text/html;charset=gbk");function xiao(){$a = 2;//定义变量static $b = 3;//定义静态变量echo $a++;echo "<hr>";echo $b++;echo "<hr>";};xiao();//调用函数xiao();//再调一次xiao();//再调一次

PHP函数及作用域的知识点有哪些

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


九、可变函数

当前有一个变量所保存到值,刚好是一个函数的名字,那么就可以使用变量+()来充当函数名使用

<h4>可变函数</h4><?phpheader("Content-type:text/html;charset=gbk");function chu(){echo __FILE__;echo __FUNCTION__;echo __LINE__;}$xiao = "chu";//定义变量$xiao();//调用可用函数

PHP函数及作用域的知识点有哪些

附加思考:

<h4>可变函数</h4><?phpheader("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*16echo "<br>","懵了吧,多想想就懂了!";//懵了吧,多想想就懂了!!

PHP函数及作用域的知识点有哪些


十、匿名函数

没有名字的函数,变量保存匿名函数,本质得到的是一个对象(Closure)。

<h4>函数</h4><?phpheader("Content-type:text/html;charset=gbk");$xiaofeng = function(){ //定义匿名函数echo "我是萧风!";};$xiaofeng();echo "<hr>";//调用匿名函数var_dump($xiaofeng);//查案变量类型及内容

PHP函数及作用域的知识点有哪些


十一、闭包函数

闭包:closure, 一词来源于以下两者的结合:要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放)和为自由变量提供绑定的计算环境(作用域)简单理解:函数内部有一些局部变量(要执行的代码块)在函数执行之后没有被释放,是因为在函数内部还有对应的函数在引用(函数的内部函数:匿名函数)

<h4>闭包函数</h4><?phpheader("Content-type:text/html;charset=gbk");function xiaofeng(){$inner = __FILE__;//定义局部变量#定义匿名函数$chuhe = function() use($inner){//用use讲局部变量保留给内部使用闭包echo $inner;};$chuhe();//调用函数}xiaofeng();

PHP函数及作用域的知识点有哪些

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

<h4>闭包函数</h4><?phpheader("Content-type:text/html;charset=gbk");function xiaofeng(){$inner = __FILE__;//定义局部变量#定义匿名函数$chuhe = function() use($inner){//用use讲局部变量保留给内部使用闭包echo $inner;};return $chuhe();//返回内部匿名函数}$closure = xiaofeng();//理论上局部变量inner已经释放了$closure();

PHP函数及作用域的知识点有哪些


十二、伪类型

 伪类型:假类型,实际上在PHP中不存在的类型。但是通过伪类型可以帮助程序员去更好的查看操作手册从而更方便学习。

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

  • Mixed:混合的,可以是多种PHP中的数据类型

  • Number:数值的,可以是任意数值类型(整形和浮点型)


十三、常用系统函数

(一)关于输出的函数

  • print():类似于echo输出提供的内容,本质是一种结构(不是函数),返回1,可以不需要使用括号

  • print_r():类似于var_dump,但是比var_dump简单,不会输出数据的类型,只会输出值(数组打印使用比较多)

(二)关于时间的函数

  • date():按照指定格式对对应的时间戳(从1970年格林威治时间开始计算的秒数),如果没有指定特定的时间戳,那么就是默认解释当前时间戳

PHP函数及作用域的知识点有哪些

  • time():获取当前时间对应的时间戳

  • microtime():获取微秒级别的时间

  • Strtotime():按照规定格式的字符串转换成时间戳

<h4>时间函数</h4><?phpheader("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");

PHP函数及作用域的知识点有哪些

(三)关于数学的函数

  • max():指定参数中最大的值

  • min():比较两个数中较小的值

  • rand():得到一个随机数,指定区间的随机整数

  • mt_rand():与rand一样,只是底层结构不一样,效率比rand高(建议使用)

  • round():四舍五入

  • ceil():向上取整

  • floor():向下取整

  • pow():求指定数字的指定指数次结果:pow(2,8) == 2^8 == 256

  • abs():绝对值

  • sqrt():求平方根

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

  • function_exists():判断指定的函数名字是否在内存中存在(帮助用户不去使用一个不存在的函数,让代码安全性更高)

  • func_get_arg():在自定义函数中去获取指定数值对应的参数

  • func_get_args():在自定义函数中获取所有的参数(数组)

  • func_num_args():获取当前自定义函数的参数数量

<h4>自定义函数</h4><?phpheader("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编程频道。

--结束END--

本文标题: PHP函数及作用域的知识点有哪些

本文链接: https://www.lsjlt.com/news/330152.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP函数及作用域的知识点有哪些
    这篇“PHP函数及作用域的知识点有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PHP函数及作用域的知识点有哪些”文章吧...
    99+
    2023-06-30
  • javascript中的函数知识点有哪些
    这篇文章主要讲解了“javascript中的函数知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript中的函数知识点有哪些”吧!Ja...
    99+
    2024-04-02
  • python中函数知识点有哪些
    这篇文章主要介绍python中函数知识点有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!函数参数的两大分类形式参数函数定义阶段括号所写的参数实际参数函数调用阶段括号内传入的参数形参与实参的关系可以将形参看成是变量...
    99+
    2023-06-25
  • C语言函数的知识点有哪些
    这篇文章主要介绍“C语言函数的知识点有哪些”,在日常操作中,相信很多人在C语言函数的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言函数的知识点有哪些”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-30
  • JavaScript匿名函数知识点有哪些
    这篇文章主要介绍了JavaScript匿名函数知识点有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript匿名函数知识点有哪些文章都会有所收获,下面我们一起来...
    99+
    2024-04-02
  • js函数相关知识点有哪些
    这篇文章将为大家详细讲解有关js函数相关知识点有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在js种函数实际上是对象,每个函数都是Function类型的实例。和其他...
    99+
    2024-04-02
  • 域名备案知识点有哪些
    这篇文章主要介绍域名备案知识点有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 网站备案是根据国家法律法规需要网站的所有者向国家有关部门申请的备案,主要有ICP备案和公安局备案。域名备案网站接入方式:专...
    99+
    2023-06-06
  • C++函数与重载知识点有哪些
    本文小编为大家详细介绍“C++函数与重载知识点有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++函数与重载知识点有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。函数的默认(缺省)参数1、默认参数的定...
    99+
    2023-06-30
  • javascript Async函数相关知识点有哪些
    本篇内容介绍了“javascript Async函数相关知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学...
    99+
    2024-04-02
  • PHP入门知识点有哪些
    小编给大家分享一下PHP入门知识点有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、 首要条件你首先必须要有一个正在工作着的支持PHP的web服务...
    99+
    2023-06-17
  • PHP中必须知道的知识点有哪些
    这篇文章主要介绍“PHP中必须知道的知识点有哪些”,在日常操作中,相信很多人在PHP中必须知道的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP中必须知道的知识点有哪些”的疑惑有所帮助!接下来...
    99+
    2023-06-20
  • Java数组知识点有哪些
    这篇文章主要介绍“Java数组知识点有哪些”,在日常操作中,相信很多人在Java数组知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java数组知识点有哪些”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-30
  • Elasticsearch的知识点有哪些
    本篇内容主要讲解“Elasticsearch的知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Elasticsearch的知识点有哪些”吧!本篇主要内...
    99+
    2024-04-02
  • MySQL的知识点有哪些
    本篇内容主要讲解“MySQL的知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL的知识点有哪些”吧! 1.在Ce...
    99+
    2024-04-02
  • Vue的知识点有哪些
    本篇内容介绍了“Vue的知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.官方介绍Vue (读音 /vjuː/,类似于 view...
    99+
    2023-06-03
  • JavaScript8的知识点有哪些
    这篇文章主要介绍“JavaScript8的知识点有哪些”,在日常操作中,相信很多人在JavaScript8的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript8的知识点有哪些”的疑...
    99+
    2023-06-27
  • SwiftUI的知识点有哪些
    这篇文章主要讲解了“SwiftUI的知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SwiftUI的知识点有哪些”吧!一、背景苹果于2019年度WWDC全球开发者大会上,发布了基于...
    99+
    2023-06-04
  • React的知识点有哪些
    这篇文章主要介绍了React的知识点有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇React的知识点有哪些文章都会有所收获,下面我们一起来看看吧。  组件的数据挂载方式,属性(props)props是正常...
    99+
    2023-06-03
  • Css的知识点有哪些
    这篇文章主要为大家展示了“ Css的知识点有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ Css的知识点有哪些”这篇文章吧。块元素、内联元素,是一个元素,...
    99+
    2024-04-02
  • HTML5的知识点有哪些
    这篇文章主要讲解了“HTML5的知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HTML5的知识点有哪些”吧!1 :基于HTML5的移动Web应用Canvas绘图:通过获取HTML...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作