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

问题描述 投票:1回答:1

我用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帮助我。

php object stdclass
1个回答
4
投票

您不能拥有两个具有相同名称的属性; $foo->summary必须提到一件事。

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

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

然后将项添加到该数组:

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

这与设置普通变量相同,并且可以以相同的方式使用该数组。

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

© www.soinside.com 2019 - 2024. All rights reserved.