php对象数组:我们可以在其中添加更多关联键吗?

时间:2011-01-05 17:18:06

标签: php arrays object

如果我执行以下操作:

foreach ($extrasServices as $extras)
{
  var_dump($extras);
}

我明白了:

object(stdClass)#15 (3) {
  ["id"]=>
  string(1) "1"
  ["optionname"]=>
  string(16) "Disk Space"
  ["optiontype"]=>
  string(1) "4"
}

object(stdClass)#18 (3) {
  ["id"]=>
  string(1) "3"
  ["optionname"]=>
  string(22) "Database (MySQL)"
  ["optiontype"]=>
  string(1) "4"
}

object(stdClass)#19 (3) {
  ["id"]=>
  string(1) "4"
  ["optionname"]=>
  string(14) "Extra Domain"
  ["optiontype"]=>
  string(1) "4"
}

在每个对象(stdClass)附加组件上,我需要添加一个额外的关联键,在该关联键中我们应该能够存储另一个数组。

我们怎样才能完成这样的事情?

非常感谢

2 个答案:

答案 0 :(得分:3)

你应该将你正在迭代的对象数组视为对象 - 并使用你拥有的任何setter方法。 (或者只是设置属性。)

因此:

foreach ($extrasServices as &$extras) {
    // If you've a custom setter.
    $extras->setterMethod('key', 'new value');

    // If you don't.
    $extras->key = 'new value';
}

但是,您还需要确保通过引用访问对象(否则它们不会在foreach迭代器之外更改)。因此,上面例子中foreach语句中的& $ extras。

答案 1 :(得分:1)

foreach ($extrasServices as $extras)
{
  $extras->new_key = array("key1" => "value1", "key2" => "value2");
  var_dump($extras);
}