【问题标题】:In PHP, can the local array variable in class member functions referenced by class member variable?在PHP中,类成员变量引用的类成员函数中的局部数组变量可以吗?
【发布时间】:2014-12-22 19:05:32
【问题描述】:
class A {
public $a;
public function foo() {
$b = array("a", "b");
$this->a = &$b;
}
}
会发生什么?
$b 是一个pointer 到一个array 并且当函数foo() 退出时,$b 消失并且数组仍然存在?
如果数组也消失了,$a 将失去对它的引用。
谁能帮我解释一下?
【问题讨论】:
标签:
php
variables
pointers
reference
local
【解决方案1】:
我认为你的意思是这样的:
是的,你可以!在这里,您将array $b 分配为对$a 的引用并更改$b。然后你输出$a 和修改后的$b一样!
<?php
class A {
public $a;
function foo() {
$b = array("a", "b");
$this->a = &$b;
$b[] = "c";
print_r($b);
unset($b);
print_r($b);
print_r($this->a);
}
function foo2() {
print_r($this->a);
}
}
$test = new A();
$test->foo();
$test->foo2();
?>
输出:
Array ( [0] => a [1] => b [2] => c ) //$b
Notice: Undefined variable: b in C:\xampp\htdocs\Testing\index.php on line 27 //after unset $b
Array ( [0] => a [1] => b [2] => c ) //$a from the function foo
Array ( [0] => a [1] => b [2] => c ) //$a from the function foo2
评论后更新:
(带全局变量)
<?php
global $c;
$c = 42;
$d = &$c;
$c = 2;
unset($c);
echo $d;
?>
输出:
2