,即Copy On Write
当只是变量的赋值或者定义时 , 不会开辟新的内存空间来保存相同变量值 , 比如:
$a = range(0,9999); $b = $a;
这里b变量不会产生新的内存空间单独存储
如果a的值发生了修改:
$a = range(0,9999); $b = $a ; $a = range(0,9999);//对a的值进行了写操作 , 会开辟新的内存空间
验证自己的想法可以使用 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()); // 结果 int(430576) int(430640) int(430640)
由于b变量引用了a变量 , 当a变量发生改变后 , 继续引用新的a变量 , 直接改变当前内存空间存储的变量值, 所以没有触发COW机制