请问谁能给个解释?关于引用“&” 你修改的是$this->var 但引用的是构造函数的临时变量$var所以$x不变$this->var['xx']=2; 再改成$var['xx'] = 2; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不太明白你的意思。$this->var难道不是指外部变量$x的引用?因为构造中用的是(&$var)这个$var就是引用。而把这个引用给了类中的var 有什么问题吗?很正常啊,是引用地址了。class Test { protected $var = null; function __construct(&$var) { $var['z']=2; $this->var = &$var; $this->var['xx']=2; }} $x=array('b'=>2);$d=new Test($x);print_r($x);Array( [b] => 2 [z] => 2 [xx] => 2) $x = array('b'=>2);$a =& $x; //$a 是 $x 的引用$a['a'] = 'a'; //所以对 $a 的改变会影响到 $x$b = $a; //$b 不是 $a 的引用$b['b'] = 'b'; //所以对 $b 的改变不会影响到 $a,更不会传递到 $xprint_r($x); http://www.cnblogs.com/thinksasa/p/3334492.html看看就明白了 $this->var = $var; 不是引用,$this->var修改不會影響$var$this->var = &$var; 是引用 ,$this->var修改會影響$var 我好像明白你的疑问在哪了如果$b引用了$a,你再用$b给$c赋值,如果不再次引用$b,$c得到的还是一个新建内存数据,想要使$c引用到$a,那么必须$c = &$b 我好像明白你的疑问在哪了如果$b引用了$a,你再用$b给$c赋值,如果不再次引用$b,$c得到的还是一个新建内存数据,想要使$c引用到$a,那么必须$c = &$b看了下手册,貌似php的&与c语言中的&根本不是一个概念。 php 的引用和 c语言 的指针当然不是一回事但你主贴中的代码的表现和等价c代码的表现是一样的 日历控件MY97的问题 dedecms中的att是什么意思? PHP编写网站程序的十个经验技巧 crontab 每分执行一次设置? 急...读取时只想读取文字不想读取出图片 页面撑开 PHP 使用 POD 访问mysql数据库,如何返回上一个插入记录的自增编号ID 关于路径的简单问题 请问有在河南新乡工作的PHP爱好者吗? 请教 karma(无为) php新手 帮忙看一下为何while里面的不执行 谢谢了 这种只有科学家才懂的话,到底是啥意思哈
不太明白你的意思。$this->var难道不是指外部变量$x的引用?因为构造中用的是(&$var)这个$var就是引用。而把这个引用给了类中的var
protected $var = null;
function __construct(&$var) {
$var['z']=2;
$this->var = &$var;
$this->var['xx']=2;
}
}
$x=array('b'=>2);
$d=new Test($x);
print_r($x);
Array
(
[b] => 2
[z] => 2
[xx] => 2
)
$a =& $x; //$a 是 $x 的引用
$a['a'] = 'a'; //所以对 $a 的改变会影响到 $x
$b = $a; //$b 不是 $a 的引用
$b['b'] = 'b'; //所以对 $b 的改变不会影响到 $a,更不会传递到 $x
print_r($x);
看看就明白了
$this->var = &$var; 是引用 ,$this->var修改會影響$var
我好像明白你的疑问在哪了
如果$b引用了$a,你再用$b给$c赋值,如果不再次引用$b,$c得到的还是一个新建内存数据,想要使$c引用到$a,那么必须$c = &$b
我好像明白你的疑问在哪了
如果$b引用了$a,你再用$b给$c赋值,如果不再次引用$b,$c得到的还是一个新建内存数据,想要使$c引用到$a,那么必须$c = &$b看了下手册,貌似php的&与c语言中的&根本不是一个概念。
但你主贴中的代码的表现和等价c代码的表现是一样的