我有一個引用問題;的例子應該是更具描述性比我:P從PHP中的數組返回對象時引用問題
我有一個類具有對象的數組,並通過一個鍵(字符串)檢索它們,像關聯數組:
class Collection {
public $elements;
function __construct() {
$this->elements = array();
}
public function get_element($key) {
foreach($this->elements as $element) {
if ($element->key == $key) {
return $element;
break;
}
}
return null;
}
public function add_element ($element) {
$this->elements[] = $element;
}
}
然後我有一個對象(通用),用鑰匙和一些變量:
class Element {
public $key;
public $another_var;
public function __construct($key) {
$this->key = $key;
$this->another_var = "default";
}
}
現在,我創造我的收藏:
$collection = new Collection();
$collection->add_element(new Element("test1"));
$collection->add_element(new Element("test2"));
然後我試圖改變包含在我的「數組」的元素的變量:
$element = $collection->get_element("test1");
$element->another_var = "random_string";
echo $collection->get_element("test1")->another_var;
好,產量
random_string
,所以我知道,我的對象傳遞給$元素參考模式。
但如果我這樣做,而不是:
$element = $collection->get_element("test1");
$element = null; //or $element = new GenericObject();
$element->another_var = "bla";
echo $collection->get_element("test1")->another_var;
輸出
default
一樣,如果它失去了參考。
那麼,怎麼了?我已經獲得了元素變量的引用,而不是元素本身?
任何想法?
編輯:爲了澄清,我想「改變」與另一個對象元素,但保持陣列中的位置。
現在我明白這是不可能以這種方式:(
爲什麼你試圖訪問一個空引用?你期望什麼樣的結果? – Simon 2010-05-12 13:07:16