class Test {
private $arr;
function __construct() {
$this->arr = array('test');
}
function getArr() {
return $this->arr;
}
}
$a = new Test();
$b = $a->getArr();
$b[0][0] = 'a';
$s = $a->getArr();
echo $s[0]
为什么这个回声测试而不是aest?返回时,PHP是否复制数组和数组的内容?如何获得一个数组,我可以在其中更改字符串并将其反映在对象中?
答案 0 :(得分:5)
通过引用返回和分配:
class Test {
//...
function &getArr() {
return $this->arr;
}
}
$a = new Test();
$b =& $a->getArr();
$b[0][0] = 'a';
$s = $a->getArr();
echo $s[0];
PHP在返回时是否复制数组和数组内容?
从程序员的角度来看,它的工作方式就好像返回会复制值,除非通过引用返回。在实现方面,有一些优化可以避免这种情况发生,只要它对脚本的行为没有影响。