【问题标题】: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] => 数组 ( ) )

  1. 为什么会这样?是否与“按值传递”/“按引用传递”问题有关?
  2. 我该如何解决这个问题?

【问题讨论】:

  • PHP 中的数组不是通过引用传递的,将它们分配给另一个变量会创建一个副本 [on write]。

标签: php arrays


【解决方案1】:

您尝试访问关联数组中的元素 0,但您不能这样做。

public function App($elm) {
    $V = $this->cms[0]['V']; // here

【讨论】:

  • 穆勒,谢谢。我解决了这个问题,它可以工作。
猜你喜欢
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-06
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 2017-09-08
相关资源
最近更新 更多