S@Kura的PHP进阶之路(三)
目录
变量范围
局部变量
全局变量
静态变量
参数的传递
变量范围
变量范围即它定义的上下文背景(也就是它的生效范围)。在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进阶之路(三)相关推荐
- pythontuple([1、2、3)_Python 进阶之路 (三) Tuple元组使用指南
比List更安全的数据类型 大家好,今天为大家介绍一种更为安全的Python内置数据类型:tuple(元组),以及它的基础用法 元组是什么 元组(tuple)是另一种有序的数据类型,与list比较类似 ...
- python123m与n的数学运算_python小白进阶之路三——循环结构入门练习+Random库练习...
文章目录 ==资源下载与使用== 输出水仙花数 100以内的素数之和 计算输入数的奇偶数之和与平均数 计算s=a+aa+aaa+-+aaa-aaa的值 有3个数字:1.2.3,能组成多少个互不相同且无 ...
- S@Kura的PHP进阶之路(一)
目录 一.php部分语法 1.php开始和结束标记 2.注意 3.注释 二.变量 1.定义 2.变量的名称及释放(销毁) 三.总结 一.php部分语法 1.php开始和结束标记 php开始标记 < ...
- S@Kura的PHP进阶之路(二)
目录 一.逻辑运算符 二.比较运算符 三.其他运算符 . 运算符 四.总结 一.逻辑运算符 其实就是"与","或","异或"和"非 ...
- S@Kura的PHP进阶之路(四)
目录 可变函数(变量函数) 递归函数 内部(内置)函数 可变函数(变量函数) 一个变量名后有圆括号,php将寻找与变量值同名的函数,并执行. 如果一个变量被赋予不同的值,程序会调用不同的函数.(即以变 ...
- S@Kura的PHP进阶之路(五)
数组创建 变量类型 整型 字符串类型 布尔类型 浮点型 方法一. 变量名称[索引值]=数据; 变量名称[]=数据;//不写索引值默认是 索引数组,从0开始 索引值相同 ...
- [转]工程师进阶之路(三)
2019独角兽企业重金招聘Python工程师标准>>> 工程师进阶之路 三 再谈沟通的策略 什么叫做策略,我的认识就是做事情的方法,有些时候光有很好的原则,而没有好的方法也是不行的. ...
- Python 进阶之路 (十二) 尾声即是开始
Python进阶之路总结 大家好,我的<< Python进阶之路>>到这一期就到此为止了,和 <<Python 基础起步>>不同,在掌握了一些基础知识后 ...
- 【JVM进阶之路】垃圾回收机制和GC算法之三色标记(三)
JVM往期文章 [JVM进阶之路]内存结构(一) [JVM进阶之路]玩转JVM中的对象(二) 上篇文章中讲到JVM中的对象以及判断对象的存活,那么对于"已死"的对象应该如何处理,怎 ...
最新文章
- BZOJ 3585: mex( 离线 + 线段树 )
- eclipse 收缩 选择行_一文解决Java初学者的选择难题
- Access外键 级联更新、删除
- 为什么要学习响应式设计
- 剑指offer 27: 二叉搜索树与双向链表
- 用netstat查看网络状态详解
- oracle 多个实例互相切换实例
- php 303,HTTP 的重定向301,302,303,307(转)
- linux可以用dos命令是什么意思,Linux系统常用命令与DOS命令的类似之处和本质区别各是什么?...
- python 数据挖掘论文,Orange:一个基于 Python 的数据挖掘和机器学习平台
- Ubuntu 加速安装Opencv 3.4.3
- Python 柱状图 横坐标 名字_Python气象绘图教程(四)
- 拼多多:有营销号“骗粉博出位” 将用法律武器维权
- 层次聚类 簇数_聚类(一):K-means、层次、DBSCAN、均值漂移、K-Means 与 KNN
- Ubuntu Android开发环境配置
- 计算机上fn按键,笔记本上fn是哪个键fn键功能详解【方法详解】
- 电脑怎么设置计算机系统,电脑定时开关机如何设置?
- Android沉浸式
- c语言 qt 写小游戏,Qt实现Flappy Bird游戏
- win7远程服务器管理工具
热门文章
- html语音合成text2audio讯飞,python讯飞语音合成
- bios密码解锁软件_你知道自己的电脑还有这么一个BIOS程序吗
- HDMI 调试之输出RGB888
- 1u服务器支持的显卡体积,1u服务器加独立显卡(1u服务器装显卡)
- 【Android Gradle 插件】 Splits 配置 ② ( Splits#abi{} 脚本块配置 | 根据 CPU 架构进行分包 | AbiSplitOptions 配置简介 )
- 【Unity】Sprite Atlas功能讲解
- 哇,你也想自由职业啊
- 人物志 | 美团无人机毛一年:建成空中机器人物流网络是技术人一生的梦想
- kali linux无线驱动安装,Kali Linux 安装WIFI无线网卡驱动:rtl8822bu 教程
- 时隔一年半,我,一个卑微的前端初学者,又来写面经了