什么是引用变量,在PHP当中,用什么符号定义引用变量?
不同的名字访问同一个变量内容,使用 表示。
COW(copy on write)
内存优化的常见手段,在php中也采用了这种方式来优化内存。
写时复制,即只有当对其中一个或多个变量进行写操作的时候,才会复制一份内存,对其内容进行修改。
在PHP中使用memory_get_usage()观察内存变化
演示未使用 (引用变量)
$a = range(0,1000); var_dump(memory_get_usage()); $b = $a;` var_dump(memory_get_usage()); $a = range(0,1000); var_dump(memory_get_usage());
运行结果:
内存在第一次和第二次并没有太大的差异,第三次产生较大差异
使用
$a = range(0,1000); var_dump(memory_get_usage()); $b = var_dump(memory_get_usage()); $a = range(0,1000); var_dump(memory_get_usage());
运行结果:
在使用引用传值内存解析分析:
$a被赋值时在内存中占据A内存空间,$b= $a 时$b指向同一内存空间,当$a发生改变时$b所占据的内存空间会跟随$a变化
unsetunset() 只会取消引用不会销毁空间
$a=1;unset($b);echo $a;
输出结果:1
内存空间分析:
$a被赋值 $b= $a之后$a与$b直行同一内存空间,当unset($b)时取消了$b对$a的引用,使$b不在指向$a的内存空间
题外话对象本身就是引用传递
html' target='_blank'>class Person public $name= zhangsan $p1 =new Person;xdebug_debug_zval( p1 $p2 =$p1;xdebug_debug_zval( p1 $p2- name= lisi xdebug_debug_zval( p1
运行结果:
结果分析:
对象被实例后经引用传递之后$p1 $p2指向的始终是同一内存空间案例?php $data = [ a , b , c foreach($data as $key = $val) $val = $data[$key]; var_dump($data);
写出如上程序的输出结果?
程序运行时,每一次循环结束后变量$data的值是什么?
程序执行完成后,变量$data的值是什么?
内存变化及解析:
相关推荐:
php变量引用与对象引用详解介绍_PHP教程
php变量引用与对象引用详解介绍
以上就是php引用变量是什么?php引用变量的实例讲解的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答