引用变量的定义
用不同的名字访问同一个变量的内容。
使用&符号
引用变量的工作原理
// 定义一个变量
$a = range(0,1000);//开辟内存
var_dump(memory_get_usage());//int(442160)
//定义变量b,将a变量的值赋值给b
//COW Copy On Write才会重新开辟内存
$b = $a;//不会开辟新空间
var_dump(memory_get_usage());//int(401200)
//对a进行修改
$a = range(0,1000);//开辟新空间
var_dump(memory_get_usage());//int(479112)
// 定义一个变量
$c = range(0,1000);//开辟空间
var_dump(memory_get_usage());//int(516032)
$d = &$c;//不会开辟新空间
var_dump(memory_get_usage());//int(516056)
//对a进行修改
$d = range(0,1000);//不会开辟新空间
var_dump(memory_get_usage());//int(516056)
分析验证引用变量的工作原理
zend引擎zval结构体用来存储变量
refcount指向某一内存空间的变量个数
is_ref是否有引用
$a = range(0,3);
echo xdebug_debug_zval('a')."<br/>";
$b = $a;
echo xdebug_debug_zval('a')."<br/>";
$a = range(0,3);
echo xdebug_debug_zval('a')."<br/>";
image.png
$c = range(0,3);
echo xdebug_debug_zval('c')."<br/>";
$d = &$c;
echo xdebug_debug_zval('c')."<br/>";
$d = range(0,3);
echo xdebug_debug_zval('c')."<br/>";
image.png













网友评论