HOWTO · PHP

Cómo crear un array de objetos en PHP

Este artículo presenta cómo crear un array de objetos en PHP

En esta página

Los arrays de PHP pueden contener objetos. Puede reunir instancias de una clase con array(), guardar instancias de stdClass en posiciones numéricas o añadir objetos de una clase asignándolos a posiciones concretas del array. En todos los casos, el índice señala el objeto y propiedades como name y type pertenecen a ese objeto.

Los ejemplos son fragmentos de código y no incluyen una salida obtenida al ejecutarlos. Al ejecutar cada uno, puede usar print_r() para inspeccionar el array y los objetos que contiene.

Crear un array de objetos de una clase en PHP

Defina una clase, cree instancias y páselas a array(). En este ejemplo, cada objeto Motorcycle tiene las propiedades públicas name y type. El array $bikes resultante contiene dos elementos en los índices 0 y 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() muestra los índices del array y, a continuación, las propiedades de cada objeto. Los valores de name y type no son claves del propio array: son propiedades de los objetos Motorcycle almacenados en las posiciones 0 y 1.

Crear un array de objetos stdClass en PHP

stdClass es una clase genérica de PHP a cuyos objetos se pueden asignar propiedades. Una instancia es un objeto, no un array. Guarde cada una en $bikes y asigne name y type al objeto de la posición correspondiente:

<?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);

Aquí, $bikes[0] y $bikes[1] son los objetos; name y type son propiedades de cada uno. Esta opción resulta útil cuando basta con un objeto sencillo y no hace falta definir una clase propia.

Crear un array de objetos con la función array() en PHP

También puede inicializar $bikes como un array vacío y añadir objetos Motorcycle después. El orden de construcción se invierte respecto al primer ejemplo: primero se crea el array y luego se asigna un objeto nuevo a cada posición y se establecen sus propiedades.

<?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 esta forma si quiere construir el array elemento por elemento, por ejemplo, mientras procesa datos de entrada. En ambos enfoques basados en clases, los índices numéricos del array apuntan a objetos y las propiedades siguen perteneciendo a cada objeto.