广

PHP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    PHP中变量引用与变量销毁机制

    2018-06-01 14:45:44 次阅读 稿源:互联网
    零七广告

    本文实例分析了PHP中变量引用与变量销毁机制。分享给大家供大家参考。具体分析如下:

    变量是php中一个非常重要的类型了,我们的有数据都通过变量或常量来进行操作,下文来看看变量引用与变量销毁。

    在php中,符号"&"表示引用。

    1、看看不引用的情况是这样子:
    $a  = "hello world";//定义一个变量,下面赋值给$b
    $b = $a;//这一步没有在$a之前加符号&,像这样子"$b= & $a"。没有加&,实际上原理是会将变量$a复制拷贝一份,也就是内存中重新申请一个地址存储变量$b了
    ps:在php中,使用"="直接赋值,其实就是拷贝一份右边的变量给b,会生成一份内存空间,结果可能是同样的内容在内存中两份。在有些关于php性能方面提到,这样子会多占有内存空间。不过我接触中,大部分人没怎么注意,其实一般应用这样子用产生的显著差异并不明显。不会看到什么效果,其实我本人也没经常使用&进行引用,呵呵。只是我觉得,深入了解里面的实现原理,非常有必要。我喜欢关注原理性的东西。

    2、使用符号&进行引用
    $a  = "hello world";
    $b = &$a;
    使用引用,php引擎不会拷贝一份变量,其实就是将指针指向了$a在内存中的地址,$b中就是保存了这个指针。
    所以使用引用的时候,把$b的值改变,$a也会跟着改变
    比如:
    $a  = "hello world";
    $b = &$a;
    $b = "test new value";//把b的值改掉,a的值也会跟着改变
    echo $a;//输出test new value,因为改变了b的值也会改变a的值。

    经常在定义函数的时候看到像这样的情况:
    function test (& $param)
    {
    //函数定义的内容
    $param++;
    }
    解释:$param前面带有引用,所以传入进来的参数并不会在内存中拷贝一份,而是直接对原来的内存空间进行引用。所以:如果里对使用符号&传入进来的变量值进行修改了,那么也会改变原来的内存空间中的值。
    做个测验如下:
    $k = 8;
    test($k);
    echo $k;//结果$k的值被函数里面改变了,输出9。
    还会经常看到这样子调用函数:
    $return  = & test_func();
    前面了解到php引擎的机制是:=会把右边的内容拷贝一份给予左边的变量。所以使用&就是将函数的结果不会进行拷贝一份,实际上我的理解是把指针给了左边的变量。
    什么是指针,以前学c语言中的概念。我的理解是就是:指针,指针,指向针(指南针,呵呵)。把指针看成是一个内存的地址容易理解点,计算机就知道去内存什么位置找数据了吧。这是浅显的理解,深入的我不会,呵呵。

    总结:使用引用是为了减少内存资源的占用。

    php手册中对引用的解释如下:

    在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,替代的是,引用是符号表别名。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告