【发布时间】:2014-04-21 08:32:23
【问题描述】:
我在 PHP 中的引用遇到了一些问题。假设您执行以下操作:
<?php
class foo
{
public $str;
}
class bar
{
public $txt;
}
class x
{
private $objs = array();
public function add(&$obj)
{
$this->objs[] = $obj;
}
public function update()
{
foreach($this->objs as $obj)
{
$obj = new bar();
$obj->txt = "bar";
}
}
}
//Make x
$x = new x();
//Make foo
$foo = new foo();
$foo->str = "foo";
//Add
$x->add($foo);
//update
$x->update();
var_dump($foo);
最后的var_dump 给出:
class foo#2 (1) {
public $str =>
string(3) "foo"
}
显然,我没有将我的引用正确地存储在数组中。有没有办法让$foo 在$x->update() 之后成为bar 类型?
【问题讨论】:
-
有趣。我不认为你能做到这一点。对象已经是引用。基本上你需要一个参考参考。
-
@Ivarpoiss:“对象已经是引用。”那没有意义。对象就是对象。对象引用是指向对象的指针。 “对象”不是 PHP5 中的值。对象指针(引用)是。对象指针与任何其他值一样是值,包含它们的变量可以根据需要通过引用传递或分配。
标签: php arrays object pass-by-reference