HOWTO · PHP
Como criar um array de objetos em PHP
Aprenda três maneiras de criar um array de objetos em PHP.
Nesta página
Arrays em PHP podem armazenar objetos. Você pode agrupar instâncias de uma classe com array(), armazenar instâncias de stdClass em índices numéricos ou acrescentar objetos a um array, atribuindo-os índice por índice. Em todos esses casos, o índice do array identifica um objeto, enquanto propriedades como name e type pertencem ao próprio objeto.
Os exemplos a seguir são ilustrações de código; não há resultados de execução registrados. Ao executar cada exemplo, use a chamada a print_r() para inspecionar o array e os objetos que ele contém.
Criar um array de objetos de uma classe em PHP
Defina uma classe, crie instâncias dela e passe esses objetos para array(). Neste exemplo, cada objeto Motorcycle tem as propriedades públicas name e type. O array $bikes resultante contém duas entradas, nos índices 0 e 1.
<?php
class Motorcycle
{
public $name;
public $type;
}
$bike1 = new Motorcycle();
$bike1->name = 'Husqvarna';
$bike1->type = 'dirt';
$bike2 = new Motorcycle();
$bike2->name = 'Goldwing';
$bike2->type = 'touring';
$bikes = array($bike1, $bike2);
print_r($bikes);
print_r() exibe os índices do array e, em seguida, as propriedades de cada objeto. Os valores de name e type não são chaves diretamente no array: são propriedades dos objetos Motorcycle guardados nos índices 0 e 1.
Criar um array de objetos stdClass em PHP
stdClass é uma classe genérica cujas instâncias podem receber propriedades. Uma instância é um objeto, não um array. Guarde cada instância no array $bikes e, em seguida, defina name e type no objeto que ocupa aquele índice:
<?php
$bikes = array();
$bikes[0] = new stdClass();
$bikes[0]->name = 'Husqvarna';
$bikes[0]->type = 'dirt';
$bikes[1] = new stdClass();
$bikes[1]->name = 'Goldwing';
$bikes[1]->type = 'touring';
print_r($bikes);
Aqui, $bikes[0] e $bikes[1] são os objetos; name e type são propriedades atribuídas a cada um. Essa opção é útil quando um objeto simples atende à necessidade e não é preciso definir uma classe nomeada.
Criar um array de objetos com a função array() em PHP
Você também pode inicializar $bikes como um array vazio e adicionar objetos Motorcycle depois. A ordem de construção é diferente da do primeiro exemplo: primeiro crie o array; em seguida, atribua um novo objeto a cada índice e defina as propriedades desse objeto.
<?php
class Motorcycle
{
public $name;
public $type;
}
$bikes = array();
$bikes[0] = new Motorcycle();
$bikes[0]->name = 'Husqvarna';
$bikes[0]->type = 'dirt';
$bikes[1] = new Motorcycle();
$bikes[1]->name = 'Goldwing';
$bikes[1]->type = 'touring';
print_r($bikes);
Use essa forma quando quiser montar o array entrada por entrada, por exemplo, durante o processamento de dados de entrada. Nas duas abordagens com classes, os índices numéricos do array apontam para objetos; as propriedades continuam pertencendo a cada objeto.