php变量

作者: 高鸿祥 | 来源:发表于2018-01-14 18:27 被阅读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() 获取变量的类型

    相关文章

      网友评论

          本文标题:php变量

          本文链接:https://www.haomeiwen.com/subject/lsakoxtx.html