<?php
class Foo {
private $values;
public function __construct() {
}
public function addElement($key, $value) {
$this->values[$key] = $value;
}
public function &getValues() {
return $this->values;
}
}
$foo = new Foo();
$foo->addElement("hello", "John Doe");
//WHY DOESN'T THE FOLLOWING LINE ALTER $foo->values ?
$foo->getValues()["goodbye"] = "Jane Doe";
PD9waHAKCmNsYXNzIEZvbyB7CgogIHByaXZhdGUgJHZhbHVlczsKCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgewoKICAgICR0aGlzLT52YWx1ZXMgPSBhcnJheSgpOwoKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBhZGRFbGVtZW50KCRrZXksICR2YWx1ZSkgewoKICAgICR0aGlzLT52YWx1ZXNbJGtleV0gPSAkdmFsdWU7CgogIH0KCiAgcHVibGljIGZ1bmN0aW9uICZnZXRWYWx1ZXMoKSB7CgogICAgcmV0dXJuICR0aGlzLT52YWx1ZXM7CgogIH0KCn0KCiRmb28gPSBuZXcgRm9vKCk7CiRmb28tPmFkZEVsZW1lbnQoImhlbGxvIiwgIkpvaG4gRG9lIik7Ci8vV0hZIERPRVNOJ1QgVEhFIEZPTExPV0lORyBMSU5FIEFMVEVSICRmb28tPnZhbHVlcyA/CiRmb28tPmdldFZhbHVlcygpWyJnb29kYnllIl0gPSAiSmFuZSBEb2UiOwoKdmFyX2R1bXAoJGZvbyk7