php变量

2018-01-14  本文已影响26人  高鸿祥

一、基本知识

1、定义

编程语言中的变量相当于容器,承载变化的内容。

变量是怎么实现的?PHP的变量是使用C语言里面的结构体实现的。结构体里面有个指针,判断这个变量在几个地方使用了,如果这个指针的值为0,那么表示真个变量无效,被删除了。

PHP的变量的申明一般和赋值是一起的。

php不需要指定数据类型。但是PHP变量是有类型的。PHP变量的类型是由他存储的值决定的。

由于这种特性,PHP也称之为弱类型语言。

$name = "zhangsan";

$age = 18;

2、命名规则

PHP的变量命名规则遵循标识符命名规则(标识符:程序运行过程中所起的名字。如:变量名,函数名,常量名)

字母数字下划线组成,不能使用数字开头

严格区分大小写

不能使用系统关键字

建议使用驼峰法命名

也可以使用下划线命名法

建议使用英文,要见文知意。

3、变量的操作

获取变量的值

$name = "zhangsan";

echo$name;

修改变量值

$age = 18;

$age = 19;

删除变量

unset(变量名);

unset($name);

注意: 删除变量只是删除变量与值之间的联系。

但是变量的变量名与值并没有删除,PHP自己的垃圾回收机制会自动回收变量名与值的内存。

4、可变变量

$ergouzi = "zhangsan";

$zhangsan = "lisi";

$lisi = "wangwu";

$wangwu = "zhaoliu";

​$$$ergouzi = ? //wangwu

二、变量存储

1、内存组成

栈区代码区全局数据区堆区

存放变量名、常量名、函数名函数、方法等存放数据数组、对象

全局数据区又分为

变量区、静态变量区、常量区

2、存储过程

$a = 100;

当定义一个变量并赋值的时候内存放生的事情

在栈区里存储一个变量名$a

在全局数据区里面的变量区里存入变量值100

给这个100的值生成一个地址

把这个地址存到栈区跟$a建立链接

相当于变量名和变量值是通过地址这个中间媒介联系在一起的

三、变量传递

1、值传递

$num = 100;

$money = $num;

$num = 120;

$money = ?

存储过程解析

变量名$num存入栈区

全局数据区的变量区存入变量值100;

给100分配一个地址,比如ox1001110111;

把地址ox1001110111存入栈区,与变量名$num建立链接

把变量名$money存入栈区

把变量值100复制一份,并分配一个新的地址,比如ox111001000;

把地址ox111001000存入栈区,与变量名$money建立链接

把ox1001110111地址下的值100改为120;

问$money的值是多少?显然,变量num的值100赋给变量money后,变量num和变量money就没有任何关系了。所有num值怎么变都不会影响money的值了。所以变量money的值是100

2、引用传递

$num = 100;

$money = &$num;  注意&符

$num = 120;

$money = ?

存储过程解析

变量名$num存入栈区

全局数据区的变量区存入变量值100;

给100分配一个地址,比如ox1000101101011;

把地址ox1000101101011存入栈区,与变量名$num建立链接

把变量名$money存入栈区

把地址ox1000101101011存入栈区,与变量名$money建立链接

把ox1000101101011地址下的值100改为120;

显然:变量num 和 变量money用的是同一个地址。所以money的值会岁num的值变化而变化。此时money的值为120

变量值传递

两个变量使用不同的地址,改变一个对另一个没影响

变量引用传递

两个变量使用相同的地址,改变一个对另一个有影响

四、php预定义变量

1、$_SERVER 服务器相关信息

echo"<pre>"; //pre作用,使代码按原来格式输出

var_dump($_SERVER_);

[‘HTTP_HOST’]  主机名

[‘SERVER_NAME’]  服务器的名称

[‘SERVER_ADDR’] 服务器的ip地址  ::1  ===  127.0.0.1

[‘SERVER_PORT’]  服务器端口

[‘REMOTE_ADDR’]  客户机的地址

[‘DOCUMENT_ROOT’] web的代码根目录

[‘REQUEST_METHOD’] 请求网页的方式

[‘REQUEST_URI’]  请求的具体URI部分。

2、$_GET

3、$POST

http表单提交使用get或者post方式提交数据,可以使用这两个预定义变量来接收

4、$_REQUEST

post或者get提交的数据都能够接受。

五、inset()测试一个变量是否被设置

变量未设置或者为null返回false,其他情况返回true

var_dump(inset(变量));

六、empty()判断变量是否为空

逻辑判断为false的变量,使用empty返回的都是true

七、gettype() 获取变量的类型

上一篇下一篇

猜你喜欢

热点阅读