【发布时间】:2015-11-19 01:50:16
【问题描述】:
正如this page 所提到的,PHP 有八种原始数据类型,即标量(布尔、整数、浮点、字符串)、复合(数组和对象)和特殊(null 和资源)。
我想问一下,由于数组是复合数据类型,因此它们应该通过引用返回,这与返回时复制的标量不同。所以我应该能够更改返回的私有数据成员(在 C++ 中这是有效的)。那么为什么内部数组数据类型没有改变(根据代码中的注释)?
注意:我知道以这种方式更改私有数据成员是不好的编码,但我想知道为什么它不起作用。
Here is a link to the code on ideone.com.
<?php
class Foo {
private $values;
public function __construct() {
$this->values = array();
}
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";
var_dump($foo);
【问题讨论】:
标签: php arrays return-value private