本文主要和大家分享php的传值和引用讲解,主要以文字的形式和大家分享,希望能帮助到大家。
介绍:
每个php变量存在一个叫
"zval"
的变量容器中。一个zval
变量容器,除了包含变量的类型和值,还包括两个字节
的额外信息。第一个是"is_ref"
,是个bool值
,用来标识这个变量是否是属于引用集合
(referenceset)。通过这个字节,php引擎才能把普通变量和引用变量区分开来,由于php允许用户通过使用&来使用自定义引用,zval变量容器中还有一个内部引用计数机制
,来优化内存使用。第二个字节是"refcount"
,用以表示指向
这个zval变量容器的变量(也称符号即symbol)个数。当"refcount"
的值是1
时,”is_ref”的值总是FALSE
.
例:
<?php$a = 10; //将常量值赋给变量,会为a分配内存空间$b = $a; //变量赋值给变量,给b分配了内存空间,并将a变量的类型和值复制一份存储到b的存储空间 $c = &$a; //引用是不会为c分配空间的,c和a是共用一份内存空间数据。
PHP中将一个变量赋值给新变量时,不会立即为新变量分配内存空间,只是增加了对内存空间的引用。当原变量或者新变量作出任何改变时,才会为新变量 分配一块内存空间。
相关推荐:
以上是php的传值和引用讲解的详细内容。更多信息请关注PHP中文网其他相关文章!