加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP中$b = $a的用法是什么,使用有啥优缺点

发布时间:2022-06-30 22:02:13 所属栏目:PHP教程 来源:互联网
导读:这篇文章给大家分享的是PHP中($b = $a)的用法是什么,使用有何优缺点。小编觉得挺实用的,因此分享给大家做个参考,文中的介绍得很详细,而要易于理解和学习,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。 本文实例讲述了php 多个变量指向同一
  这篇文章给大家分享的是PHP中($b = &$a)的用法是什么,使用有何优缺点。小编觉得挺实用的,因此分享给大家做个参考,文中的介绍得很详细,而要易于理解和学习,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。
 
  本文实例讲述了php 多个变量指向同一个引用($b = &$a)用法。分享给大家供大家参考,具体如下:
 
  引用是什么?
 
  引用就是多个变量指向同一个内存区域地址。如我们经常用的实例一个类,就是内存中开辟了一个区域存储实例的类,实例赋值给变量就是让这个变量指向这个内存区域。
 
  多个变量指向同一个引用有什么好处?
 
  节约了内存空间,多个变量指向同一个内存地址,在调用的时候多个变量都是指向的同一个内存地址。
 
  多个变量指向同一个引用的缺点
 
  要注意使用安全,即是由于多个变量都是指向的同一个内存地址,其中一个变量更改了某个属性,其它的变量调用的时候都是用的已经更改的实例。
 
  在php 中我们为一个变量赋值的时候会在内存中开辟一个区域存储该值。那么我们将这个变量赋值给另一个变量的时候会在内存中重新开辟一个区域去存储改值吗? 我做了如下实验
 
  <?php
 
  $d = "aaa";
 
  $c = $d;
 
  echo $c . "<br />";
 
  $d = "bbb";
 
  echo $c . "<br />";
 
  /**
 
   * 执行结果是
 
   * aaa
 
   * aaa
 
   */
 
  ?>
 
  看到这里 不知道你理解了没有,创建的变量$d 并为之赋初始值aaa 再将$d 赋值给$c,之后输出$c 然后更改$d的值,在输出$c。这个实验告诉我们,$d再给$c赋值的时候是在内存中重新开辟了一个区域的。
 
  那么,我们怎么才能让$d和$c 都指向一个引用呢? 查了下资料 如下方法 让两个变量指向同一个内存地址
 
  <?php
 
  $a = "123";
 
  $b = &$a;
 
  echo $b."<br />";
 
  $a = "456";
 
  echo $b;
 
  /**
 
   * 运行结果如下
 
   * 123
 
   * 456
 
   */
 
  ?>
 
  我更改了一下变量的名字。方便测试发现区别。在这里我们可以看到 $b=&$a 其中&符号的作用就是让$b 指向的是$a的内存区域,而不是重新开辟一个区域。所以当更改$a的值的时候$b也会随着变化。
 
  前面我们实验的对象是基本字符串,现在我们来看下类是否遵从这个规则
 
  <?php
 
  class Demo
 
  {
 
    public $demo = "aaaa";
 
  }
 
  $demo1 = new Demo();
 
  $demo2 = $demo1;
 
  echo $demo2->demo . "<br />";
 
  $demo1->demo = "bbbb";
 
  echo $demo2->demo . "<br />";
 
  /**
 
   * 运行结果
 
   * aaaa
 
   * bbbb
 
   */
 
  ?>
 
  我这里并没有&符号指定$demo2必须指向$demo1 的内存区域,所以关于类,当一个实例变量赋值给另一个变量的时候默认就是两个变量指向同一个引用;
 
  php 的引用我觉得没有 java的好用,也许是这门语言本身还在发展,很多处理还没有那么方便完善。 java初去基本数据类型(int、long、byte、short、char、boolean、float、double等),两个变量赋值都是指向同一个内存地址,而且不用你特意去指定。
 
  “PHP中($b = &$a)的用法是什么,使用有何优缺点”的内容就介绍到这里了,感谢大家的阅读。
 

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读