php中全局变量和局部变量,php中局部变量可分为哪两种类型?

用户投稿 139 0

关于“php_全局变量_局部变量”的问题,小编就整理了【3】个相关介绍“php_全局变量_局部变量”的解答:

php中局部变量可分为哪两种类型?

变量的定义:在整个php脚本中可以发生改变的量叫做变量

变量命名的规则:

   ①所有的变量必须用$ 来修饰

   ②由字母数字下划线组成

   ③不能用数字开头

   ④可以是中文,但一般不用,不能包含特殊字符

⑤变量名区分大小写

四种标量数据类型:整型、实型(浮点型) 字符型布尔型

两种特殊类型:资源 NULL

两种复合数据类型:数组和对象

常量定义:在整个程序运行过程中其值不发生改变的量,切记常量不加$

例如:define(“A”,10); echo A; 输出10

Defined(常量名) //检测常量是否被设置

常量可以一旦被定义不能被修改,在整个运行过程中不可以改变的量

变量可 以改变的量,常量占内存,变量不占内存 因为变量在脚本执行结束时会自动释放

全局变量和局部变量有什么区别?是怎么实现的?

1、 全局变量的作用用这个程序块,而局部变量作用于当前函数2、前者在内存中分配在全局数据区,后者分配在栈区3、 生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁,局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在4、 使用方式不同:通过声明后全局变量程序的各个部分都可以用到,局部变量只能在局部使用操作系统和编译器通过内存分配的位置来知道的全局变量分配在全局数据段,并且在程序被运行的时候就被加载。

编译器通过语法词法的分析,判断出是全局变量还是局部变量。

如果是全局变量的话,编译器在将源代码翻译成二进制代码时就为全局变量分配好一个虚拟地址 (windows下0x00400000以上的地址,也就是所说的全局区),所以程序在对全局变量的操作时是对一个硬编码的地址操做。

局部变量的话,编译时不分配空间,而是以相对于ebp或esp的偏移来表示局部变量的地址,所以局部变量内存是在局部变量所在的函数被调用时才真正分配。

以汇编的角度来看:函数执行时,局部变量在栈中分配,函数调用完毕释放局部变量对应的内存,另外局部变量可以直接分配在寄存器中。

操作系统通过变量的分配地址就可以判断出是局部变量和全局变量。

局部变量和全局变量的区别是什么?

具体来说,全局变量和局部变量的区别如下:

1. 作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等

2. 内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区

3. 生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了

4. 使用方式不同:全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量

到此,以上就是小编对于“php_全局变量_局部变量”的问题就介绍到这了,希望介绍关于“php_全局变量_局部变量”的【3】点解答对大家有用。

抱歉,评论功能暂时关闭!