【发布时间】:2021-10-29 00:34:06
【问题描述】:
我有一个PHP class containing a 2-dimensional array:
class ArrApp
{
private $cms = [
'S' => 'A',
'V' => []
];
...
}
该类有一个方法可以在内部数组中追加指定元素:
public function App($elm)
{
$V = $this->cms[0]['V'];
array_push($V, $elm);
$this->Prt();
}
Prt() 方法只是打印外部数组:
public function Prt()
{
print_r($this->cms);
echo '<br>';
}
我实例化该类并尝试在内部数组中附加一个元素:
$aa = new ArrApp();
$aa->Prt();
$aa->App(1);
$aa->Prt();
但是,O/P 显示一个空的内部数组:
数组 ( [S] => A [V] => 数组 ( ) )
数组 ( [S] => A [V] => 数组 ( ) )
数组 ( [S] => A [V] => 数组 ( ) )
- 为什么会这样?是否与“按值传递”/“按引用传递”问题有关?
- 我该如何解决这个问题?
【问题讨论】:
-
PHP 中的数组不是通过引用传递的,将它们分配给另一个变量会创建一个副本 [on write]。