目录

变量范围

局部变量

全局变量

静态变量

参数的传递


变量范围


变量范围即它定义的上下文背景(也就是它的生效范围)。在javascript中,并没有变量范围这一概念,相似的可能是作用域。但是,由于javscript使用的是词法作用域,指变量声明时的位置;而php并不存在变量声明,变量在第一次赋值时相当于声明了变量。所以,二者并不相同。本文将详细介绍php中的变量范围。

局部变量


局部变量是在函数内声明的变量,其作用域仅限于函数内部。函数的参数也是局部变量,区别在于,函数参数值来自被调用时传入的值。执行完毕后函数内部的动态变量都将被释放。

function test(){
$a=1;//局部变量$a,仅在这个函数内部有效
}
echo $a;

全局变量


在函数外定义的变量称为全局变量,作用域范围在定义变量开始到本程序文件的末尾。

另外,在函数中无法直接调用全局变量,需要使用关键字global,也可以使用$GLOBALS来代替global。$GLOBALS 是一个超全局变量。

<?php$a = 1;
$b = 2;
function Sum()
{undefinedglobal $a, $b; $b = $a + $b;}Sum();
echo $b;//输出的结果是3

静态变量


静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。静态变量用static来声明的,未被static声明的默认是动态变量。其在函数执行完之后,内部的静态变量已然保存在内存中。仅在脚本执行期间,第一次调用该函数时被初始化。

<?phpfunction test(){undefinedstatic $a = 0; echo $a; $a++;}test();//输出0test();//输出1?>

同时静态变量也提供了一种处理递归函数的方法。递归函数是一种调用自己的函数。写递归函数时要小心,因为可能会无穷递归下去。必须确保有充分的方法来中止递归。以下这个简单的函数递归计数到 10,使用静态变量 $count 来判断何时停止

<?phpfunction test(){undefinedstatic $count = 0; $count++; echo $count; if ($count < 10) {undefinedtest();} $count--;}?>

参数的传递


在调用函数时,需要向函数传递参数,被传入函数的参数称为实参,而函数定义的参数称为形参。而向函数传递参数的方式有四种,分别是值传递、引用传递、默认参数和可变长度参数。

按值传递参数

默认的传参方式,我们在传递参数的时候默认使用的就是这个方式,对形式参数的操作,不会影响到实际参数的值。因此如果不希望函数修改实参的值,就可以通过值传递的方式。

按引用传递参数

按引用传递参数,对形式参数的操作会影响实际参数。这样我们在函数内部是对这个参数本身进行操作。

函数的默认参数

可以给形式参数设置默认值,直接赋值就可以设置

注意:必须从右往左赋值,右边的必须要有,才能给左边的赋值,如果只给左边的赋值,而不给右边的赋值,左边的赋值将不作数。

可变长度参数列表

在 PHP 5.6 及以后的版本中,函数的形式参数可使用…来表示函数可接受一个可变数量的参数,可变参数将会被当作一个数组传递给函数。

func_get_args();
func_get_arg();
func_num_args();

S@Kura的PHP进阶之路(三)相关推荐

  1. pythontuple([1、2、3)_Python 进阶之路 (三) Tuple元组使用指南

    比List更安全的数据类型 大家好,今天为大家介绍一种更为安全的Python内置数据类型:tuple(元组),以及它的基础用法 元组是什么 元组(tuple)是另一种有序的数据类型,与list比较类似 ...

  2. python123m与n的数学运算_python小白进阶之路三——循环结构入门练习+Random库练习...

    文章目录 ==资源下载与使用== 输出水仙花数 100以内的素数之和 计算输入数的奇偶数之和与平均数 计算s=a+aa+aaa+-+aaa-aaa的值 有3个数字:1.2.3,能组成多少个互不相同且无 ...

  3. S@Kura的PHP进阶之路(一)

    目录 一.php部分语法 1.php开始和结束标记 2.注意 3.注释 二.变量 1.定义 2.变量的名称及释放(销毁) 三.总结 一.php部分语法 1.php开始和结束标记 php开始标记 < ...

  4. S@Kura的PHP进阶之路(二)

    目录 一.逻辑运算符 二.比较运算符 三.其他运算符 . 运算符 四.总结 一.逻辑运算符 其实就是"与","或","异或"和"非 ...

  5. S@Kura的PHP进阶之路(四)

    目录 可变函数(变量函数) 递归函数 内部(内置)函数 可变函数(变量函数) 一个变量名后有圆括号,php将寻找与变量值同名的函数,并执行. 如果一个变量被赋予不同的值,程序会调用不同的函数.(即以变 ...

  6. S@Kura的PHP进阶之路(五)

    数组创建 变量类型 整型 字符串类型 布尔类型 浮点型  方法一.         变量名称[索引值]=数据;         变量名称[]=数据;//不写索引值默认是 索引数组,从0开始 索引值相同 ...

  7. [转]工程师进阶之路(三)

    2019独角兽企业重金招聘Python工程师标准>>> 工程师进阶之路 三 再谈沟通的策略 什么叫做策略,我的认识就是做事情的方法,有些时候光有很好的原则,而没有好的方法也是不行的. ...

  8. Python 进阶之路 (十二) 尾声即是开始

    Python进阶之路总结 大家好,我的<< Python进阶之路>>到这一期就到此为止了,和 <<Python 基础起步>>不同,在掌握了一些基础知识后 ...

  9. 【JVM进阶之路】垃圾回收机制和GC算法之三色标记(三)

    JVM往期文章 [JVM进阶之路]内存结构(一) [JVM进阶之路]玩转JVM中的对象(二) 上篇文章中讲到JVM中的对象以及判断对象的存活,那么对于"已死"的对象应该如何处理,怎 ...

最新文章

  1. BZOJ 3585: mex( 离线 + 线段树 )
  2. eclipse 收缩 选择行_一文解决Java初学者的选择难题
  3. Access外键 级联更新、删除
  4. 为什么要学习响应式设计
  5. 剑指offer 27: 二叉搜索树与双向链表
  6. 用netstat查看网络状态详解
  7. oracle 多个实例互相切换实例
  8. php 303,HTTP 的重定向301,302,303,307(转)
  9. linux可以用dos命令是什么意思,Linux系统常用命令与DOS命令的类似之处和本质区别各是什么?...
  10. python 数据挖掘论文,Orange:一个基于 Python 的数据挖掘和机器学习平台
  11. Ubuntu 加速安装Opencv 3.4.3
  12. Python 柱状图 横坐标 名字_Python气象绘图教程(四)
  13. 拼多多:有营销号“骗粉博出位” 将用法律武器维权
  14. 层次聚类 簇数_聚类(一):K-means、层次、DBSCAN、均值漂移、K-Means 与 KNN
  15. Ubuntu Android开发环境配置
  16. 计算机上fn按键,笔记本上fn是哪个键fn键功能详解【方法详解】
  17. 电脑怎么设置计算机系统,电脑定时开关机如何设置?
  18. Android沉浸式
  19. c语言 qt 写小游戏,Qt实现Flappy Bird游戏
  20. win7远程服务器管理工具

热门文章

  1. html语音合成text2audio讯飞,python讯飞语音合成
  2. bios密码解锁软件_你知道自己的电脑还有这么一个BIOS程序吗
  3. HDMI 调试之输出RGB888
  4. 1u服务器支持的显卡体积,1u服务器加独立显卡(1u服务器装显卡)
  5. 【Android Gradle 插件】 Splits 配置 ② ( Splits#abi{} 脚本块配置 | 根据 CPU 架构进行分包 | AbiSplitOptions 配置简介 )
  6. 【Unity】Sprite Atlas功能讲解
  7. 哇,你也想自由职业啊
  8. 人物志 | 美团无人机毛一年:建成空中机器人物流网络是技术人一生的梦想
  9. kali linux无线驱动安装,Kali Linux 安装WIFI无线网卡驱动:rtl8822bu 教程
  10. 时隔一年半,我,一个卑微的前端初学者,又来写面经了