添加更多具有相同名称的对象(stdClass) php

Add more object(stdClass) with the same name with php

我用 php 创建了一个带有新 stdClass 的新对象。

$response->node1->node2->summary = new stdClass();
$response->node1->node2->summary->text = "lorem ipsum";
echo "<pre>";
var_dump( $response );
echo "</pre>"

这是结果:

object(stdClass)#17 (1) {
  ["node1"]=>
  object(stdClass)#10 (1) {
    ["node2"]=>
    object(stdClass)#12 (1) {
      ["summary"]=>
      object(stdClass)#16 (1) {
        ["text"]=>
        string(11) "lorem ipsum"
      }
    }
  }
}

如何在名称为 "summary" 的循环中创建更多对象? 结果应如下所示:

object(stdClass)#17 (1) {
  ["node1"]=>
  object(stdClass)#10 (1) {
    ["node2"]=>
    object(stdClass)#12 (1) {
      ["summary"]=>
      object(stdClass)#16 (1) {
        ["text"]=>
        string(11) "lorem ipsum"
      }
      ["summary"]=>
      object(stdClass)#17 (1) {
        ["text"]=>
        string(11) "different content"
      }
    }
  }
}

在 for 循环中,我总是得到 for 循环中的最后一个内容。

thx 4 帮助我。

两个属性不能同名; $foo->summary 必须指代一个事物。

你可以做的是将 属性 的值设置为一个数组:

$response->node1->node2->summary = [];

然后将项目添加到该数组:

$response->node1->node2->summary[] = $summary;

这和普通变量的设置一样,数组的使用方法也一样。

(如果您对各种节点使用 类 而不是一大堆 stdClass 对象,那么所有这些可能会更清楚,但我会给您带来疑问的好处并假设您有充分的理由这样做。)