массив объектов php: можем ли мы добавить в них больше ассоциативных ключей? - PullRequest
1 голос
/ 05 января 2011

Если я сделаю следующее:

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 ]

3 голосов
/ 05 января 2011

Вы должны действительно относиться к массиву объектов, по которому вы перебираете объекты, как к объектам - и использовать любой метод установки, который у вас есть. (Или просто установите свойство.)

Как таковой:

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 в приведенном выше примере.

1 голос
/ 05 января 2011
foreach ($extrasServices as $extras)
{
  $extras->new_key = array("key1" => "value1", "key2" => "value2");
  var_dump($extras);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...