Как мы можем манипулировать классом std в php?

Можно ли добавлять элементы в стандартные классы, как мы это делаем для массивов?

Array (
  [0] => item 1
  [1] => item 2
)

Stdclass (
  [0] => item 1
  [1] => item 2
)

Как правило, сложнее манипулировать объектами по сравнению с массивами? Поскольку у нас есть много функций массива, которые можно использовать и т.д.


person resting    schedule 21.12.2010    source источник
comment
Stdclass — это пустой класс, например Object в Java.   -  person Rafe Kettler    schedule 21.12.2010


Ответы (4)


Конечно, вы можете добавить новые элементы...

$Object = new StdClass();
$Object->item1 = 1;
$Object->item2 = 2;

Если вы хотите перебирать объект как массив, вы должны использовать PHP SPL ArrayIterator или RecursiveArrayIterator.

Также вы можете использовать приведение типов для перехода от массива к объекту и обратно...

$array = array('item1', 'item2');
$Object = (object)$array;
var_dump($object);
$array = (array)$Object;
var_dump($array);
person Kirzilla    schedule 21.12.2010

Да, но без числового индекса.

  $a = new stdclass();
  $a->foo = 'item 1';
  $a->bar = 'item 2';
  $a->goobar = array('item1', 'item2');
  var_dump($a);

Если вам нужны более сложные сценарии, посмотрите ArrayAccess и МассивОбъект.

person StasM    schedule 21.12.2010

В документации говорится:

Создано путем приведения типов к объекту.

Таким образом, вы можете переключаться между (массивом) и (объектом) для работы с экземплярами stdClass с функциями массива.

person demonkoryu    schedule 21.12.2010

Манипулировать не сложнее. Все, что я хотел бы сказать, это то, что такие вещи, как count и array_search, не работают с объектом.

Массив и объекты имеют свои преимущества, это зависит от того, чего вы пытаетесь достичь.

Документация http://php.net будет указывать, какие типы данных можно передавать в какие функции.

person Mike    schedule 21.12.2010