PHP变量、内存、代码与内存分区

预定义变量:系统定义的变量,都是数组,比如:

$-GET:获取所有表单以get方式提交的数据

$_POST:保存post方法提交的数据

$_REQUEST:get和post提交的都会保存

$_GLOBALS:PHP所有的全局变量

$_COOKIE:ciikie会话数据

  • 可变变量:如果一个变量保存的值刚好是另一个变量的名字,那么可以直接访问这个变量得到另一个变量的值,再变量前面朵加一个“$”

    $a="b";
    $b="bb";
    echo $$a

  • 变量传值:姜一个变量赋值给另一个变量

    • 值传递:姜变量保存的值复制一份,讲新的值赋给另一个变量,两个变量没有关系

    • 引用传递:将变量保存的值所在的内存地址,传递给另一个变量,两个变量指向同一内存空间,两个变量是同一个值 【语法:$新变量=&$老变量】【用这种方法,新变量的值呗改变,老变量也会改变,毕竟是一点个地方存储的嘛】

  • 内存分区

    • 栈区:系统进行操作,程序运行的地方,不存储数据,小但是快

    • 代码段:存储程序的部分(不执行)

    • 数据段:存储普通数据(全局区和静态区)

    • 堆区:存储复杂数据,大但是效率低

  • 内存和代码

    /*以这段代码为例*/
    <?php
        $a=1;
        $b=$a;(值传递)
        $b=2;
        echo $a$b;
            

    • 代码装载:从脚本文件中将代码取出来,进行编译,将编译的结果放在代码段

    • 代码执行:从代码段中一行一行的执行代码

      • 执行$a=1:再栈区开辟一块内存存储$a,在数据段中开辟一块内存保留值1;然后将1所在的位置赋给a变量

      • 执行$b=$a :栈区开辟存储$b;发现是赋值运算,(而引用传递是直接取出存储a变量的值的地址赋给b变量,并不在数据段开辟新的空间进行存储)会取出$a的值,重新在数据段存储;将新值的内存地址赋值给b变量

      • 执行$b=2

      • 脚本执行结束:系统会回牧所有的内存(栈区,代码段)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MUNG东隅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值