PHP变量
概念
1) 什么是量
量其实就是 数据.
1) 什么是变量
变量就是 在一个脚本周期内,其值可以改变的量.
2) 什么叫做一个脚本周期
一个脚本周期就是 当apache将请求交给php模块解析开始,到 php模块解析完成为止,这个就是一个 脚本周期
变量的组成
1) 变量组成
$a = 100;
分2部分 $a 和 100
$a 是变量名
100 是变量的值
变量名 和变量值 之间是啥关系呢? 引用和被引用的关系
在内存中是 变量名 引用 变量值 ; 变量值 被 变量名所引用;
2) 内存组成
堆区:空间大,但是速度慢,一般存放数组、对象等复杂的数据类型!
栈区:空间小,但是速度快,一般存所占空间不变的数据,比如变量名,常量名、函数名、数组名!
代码区:就是存函数或对象的方法等代码
全局数据区:主要存放变量、常量、静态变量!

3) 深度剖析一下$a = 100;

① 在全局区的变量区 分配一块内存空间用户保存100这个值,同时这个内存空间有一个地址,这个地址举例为1000 1000
② 在栈区开辟一块内存空间,$a
③ $a用于保存 变量区的地址(1000 1000),同时变量名对变量区的数据有一个引用关系
4) 深度剖析一下echo $a
① 在栈区找到变量$a
② 根据$a存在的地址,找到变量区
③ 找到变量区的地址之后,就找到了对应的数值,然后输出出来
变量的基本语法:$
$是用于声明后边为一个变量. $其实并不属于变量名的一部分


变量的命名规则
变量命名遵循标识符的命名规则。标识符用来标识信息的名称。如变量名,常量名,函数名等
标识符的命名规则:
- 由字母数字下划线等多个字符组成,以字母或者下划线开头。
- 变量命名严格区分大小写。
- 不使用系统关键字
- 建议命名使用英文单词,见名知意。
多个单词组成的变量:StudentName
驼峰命名法
-
第一个单词首字母小写,其余单词的首字母大写(小驼峰)举例: studentName
-
每个单词的首字母都大写(大驼峰),举例: StudentName
-
使用下划线进行分割: 举例 student_name
类名一般使用 大驼峰. 函数一般使用 小驼峰 数据库一般使用 下划线
可变变量
PHP支持动态改变变量名。即可变变量的名称由变量的值组成
我们的变量名也是可以作为一个变量的,就叫做 可变变量!!!

以后还会接触 可变函数, 可变类等可变类型

变量的基本操作
1. 变量声明(增)
- php不需要显示的声明变量(比如c语言中的int a;),变量的声明一般和赋值同时进行,也叫作变量的初始化!
- 变量可以是任意的类型,而不需要指定具体的类型,或者说可以放置任意数据类型的值!
- 虽然php变量不需要显示的声明,但并不代表可以直接使用一个完成没有初始化的变量!


- 虽然php变量不需要指定类型,但不并代表该变量没有数据类型,变量的数据类型就是其保存的值的类型!我们是通过变量的值来确定变量的类型!
2. 删除变量(删)
删除操作是采用系统的函数 unset($变量名);

深度剖析一下 unset($a) 在内存中做了那些工作???

① 在栈区把$a这个变量移除
② 把栈区$a对 变量区的引用移除
全局区的变量区数据并不是由unset进行回收的,而是由php的核心解释器负责管理和回收的.
3. 变量的修改(改)
直接赋新值就可以!!!
4. 获取变量的值(查)
echo ,var_dump 来获取变量的值
变量间的传值
将一个变量传递给另外一个变量
$a = 100;
$b = $a;
1. 值传递
$a = 100;
$b = $a; 这里 $b = $a是值传递;
值传递可以理解成为 复制 传递;

① 在全局区的变量区 重新开辟一块内存空间,它的地址是 1000 1001.但是内存的值还是原来变量的值 100.
② 在栈区重新开辟一块内存空间$b
③ 栈区的$b所存储的是 新开辟的变量区的空间地址1000 1001,同时$b对变量区有一个引用.


1. 引用传递
引用传递,就是将一个变量的内存空间地址赋值给另外一个变量!
问题: 我们如何获取到一个变量的内存空间地址.
我们使用 & 取地址符.
$a = 100;
$b = & $a;

① 在全局区的变量区通过地址找到这个变量
② 在栈区重新开辟一块内存空间$b
③ 在$b的栈区保存 找到的那个地址 1000 1000,同时$b对变量有一个引用关系


浙公网安备 33010602011771号