$a = &$b;
$a和$b是完全等同的,他们指向同样的地方,并不是$a指向$b,也不是$b指向$a,他们是一样一样一样的.
unset和=null的区别。
php里的变量就是一个就是一个连接,指向一个存储单元。unset一个变量直接把这个连接消灭了,而赋值NULL并没有消灭这个连接。
$a['test'] = 1;
unset $a['test'];print_r($a);
$a['test']=null;print_r($a);
即可看出差别
=& 这个东西 $foo =& new Foo();
php5.0.0以前这么用是想返回一个引用而不是一个对象的副本。
php5以后,new关键字直接返回引用了,所以就用不着上边这种方式了,上边这种方式就变成了不推荐使用的。
一下这段代码:
$var1 = "Example variable";
$var2 = "";
function global_references($use_globals)
{
global $var1, $var2;
if (!$use_globals) {
$var2 =& $var1; // visible only inside the function
} else {
$GLOBALS["var2"] =& $var1; // visible also in global context
}
}
global_references(false);
echo "var2 is set to '$var2'/n"; // var2 is set to ''
global_references(true);
echo "var2 is set to '$var2'/n"; // var2 is set to 'Example variable'
?>
如果在一个函数中使用了global xx,这个样的话,直接对xx的值做修改是有效果的,但是如果给其赋值一个引用就没有效果了,怎么解释呢。
如果global $a 等价于 $a =& $GLOBALS['a'],是不是上述现象就好解释了。