在php中变量的赋值分为按值赋值, 和引用赋值.
在按值赋值中, $a = val; $b = $a ; 可以看成$a = val; $b =val;变量b被赋予a的值之后, a和b便没有任何的引用关系了, 此时改变其中任意一个值, 另外一个值不会受到影响.
在引用传值种, $a = val; $b = &$a; 也可以看成$a = val; $b =val; 不过变量a和b还要满足一个条件就是必须相等, 因为两个变量有着共同的引用, 当一个值改变时, 另外一个值也跟着改变. 如 在给变量b赋值, $b = val2; 并打印a和b, 发现a, b的值都为val2.
在通过引用赋值的中 $a = val; $b = &$a; 如果通过unset()函数来销毁a, 并输出a, b , a变量会提示变量not definded,那么b变量会得到什么结果呢?
打印变量b仍然会得到val, 因为unset()在销毁a时, 会检查a对应的值是否还存在其他的引用, 如果存在, 则只销毁变量a不销毁a对应的值.