为啥我不能在 PHP 类的嵌套数组中附加元素? [复制]
Posted
技术标签:
【中文标题】为啥我不能在 PHP 类的嵌套数组中附加元素? [复制]【英文标题】:Why can't I append an element in a PHP class' nested array? [duplicate]为什么我不能在 PHP 类的嵌套数组中附加元素? [复制] 【发布时间】: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]。 【参考方案1】:您尝试访问关联数组中的元素 0,但您不能这样做。
public function App($elm)
$V = $this->cms[0]['V']; // here
【讨论】:
穆勒,谢谢。我解决了这个问题,它可以工作。以上是关于为啥我不能在 PHP 类的嵌套数组中附加元素? [复制]的主要内容,如果未能解决你的问题,请参考以下文章