PHP - problema inicializar objeto

 
Vista:
sin imagen de perfil
Val: 25
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

problema inicializar objeto

Publicado por Ruben (28 intervenciones) el 24/05/2024 09:31:39
Buenas.

Como puedo inicializar un objeto con la estructura siguiente:

$Registro->Nombre =" ";
$Registro->Apellido1=" ";
$Registro->Apellido2=" ";

for ($i=0; $i<14; $i++)
{
$Registro->$Vivienda[$i]->Propiedad = " ";
$Registro->$Vivienda[$i]->Alquiler = " ";
}

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

problema inicializar objeto

Publicado por Mauro (1040 intervenciones) el 24/05/2024 10:43:57
Buenas Rubén:

¿A qué te refieres con _inicializar_? ¿Podrías explicar un poco más qué es lo que quieres lograr?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

problema inicializar objeto

Publicado por Ruben (28 intervenciones) el 24/05/2024 11:01:29
Gracias por contestar...

Realmente lo que quiero es Crear un Objeto con esa estructura.

Lo he intentado con
1
$Registro = new stdClass();

No tengo probblema al inicializar

1
2
3
$Registro->Nombre =" ";
$Registro->Apellido1=" ";
$Registro->Apellido2=" "


el problema surge cuando intento inicializar el vector (matriz) Vivienda contenido en registro

1
2
3
4
$Registro->$Vivienda[0]->Propiedad      = " ";
$Registro->$Vivienda[0]->Alquiler          = " ";
$Registro->$Vivienda[1]->Propiedad      = " ";
.......

Creo que debería también crear el objeto vector contenido .... o no.... no tengo ni idea.


Gracias.


.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

problema inicializar objeto (resuelto)

Publicado por Ruben (28 intervenciones) el 03/06/2024 09:57:51
La solución fue aportada por daneshafeez (Gracias) :

El problema que está encontrando está relacionado con cómo intenta acceder e inicializar la matriz $vivienda dentro del objeto stdClass. En PHP, no puedes usar directamente la sintaxis de matriz con propiedades de objeto en la forma que has mostrado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$Registro = new stdClass();
 
//Inicializar propiedades basicas:
 
$Registro->Nombre= " ";
$Registro->{"Apellido1"} = " ";
$Registro->{"Apellido2"} = " ";
 
// Inicializar propiedad vivienda
 
$Reg->vivienda = array(); // Inicializar la vivienda como una matriz vacía
 
for ($i = 0; $i < 14; $i++) {
    $Registro->vivienda[$i] = new stdClass(); //Inicializa cada elemento como un objeto stdClass
    $Registro->vivienda[$i]->Alquiler          = " ";
    $Registro->vivienda[$i]->Propiedad     = " ";
}


Propiedades básicas:

1
2
3
$Reg->Name = " ";
$Reg->{"Apellido1"} = " ";
$Reg->{"Apellido2"} = " ";

Aquí, estamos configurando las propiedades básicas del objeto $Registro. Tenga en cuenta que para las propiedades con espacios en sus nombres, utilizamos llaves para configurarlas correctamente.

Propiedades de vivienda:

1
$Registro->vivienda = array(); //Inicializamos vivienda como una matriz vacía.

1
2
3
4
5
for ($i = 0; $i < 14; $i++) {
$Registro->vivienda[$i] = new stdClass(); //Inicializa cada elemento como un objeto stdClass
$Registro->vivienda[$i]->Alquiler     = " ";
$Registro->vivienda[$i]->Propiedad= " ";
}

Dentro del ciclo, creamos un nuevo objeto stdClass para cada elemento de la matriz de vivienda y luego configuramos las propiedades de propiedad y Alquiler para cada vivienda.
Este enfoque garantiza que cada elemento de la vivienda sea un objeto con sus propias propiedades y que el código funcione sin errores.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

problema inicializar objeto

Publicado por Mauro (1040 intervenciones) el 12/06/2024 08:56:35
Hola Ruben:

Para empezar, te recomiendo que no uses stdClass si no que definas la clase del objeto que querrás usar.

El otro problema que estás teniendo es que estás usando $Vivienda en lugar de Vivienda. Al usar $Vivienda el intérprete está buscando una variable llamada $Vivienda para usar como nombre de la propiedad del objeto... algo así como meta-programación... un uso bastante avanzado y, salvo en rarísimas ocasiones, poco recomendable.

Mi sugerencia es que lo hagas así:

1
2
3
4
$vivienda = new stdClass();
$vivienda->Propiedad = " ";
$vivienda->Alquiler = " ";
$Registro->Vivienda = [0 => $vivienda];

Aunque de nuevo, yo crearía una clase Vivienda también.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar