Error en array multidimensional
Publicado por ApNow (1 intervención) el 19/07/2006 19:57:51
Hola,
Estoy intentando crear un array de array de la siguiente forma pero me da un error. El código es el siguiente:
class hijo2
{
var $nom_hijo2; // Objeto hijo;
// Constructor:
function hijo2()
{
$this->nom_hijo2 = "";
}
}
class hijo1
{
// Test array de arrays:
var $nom_hijo1;
var $obj_hijo1;
var $hijo2_cont; // Contador de hijo2.
// Constructor:
function raiz()
{
$this->nom_hijo1 = "";
$this->obj_hijo1 = array();
$this->hijo2_cont = 0;
}
}
class principal
{
var $nombre; // Nombre de la clase principal;
var $phijo1; // variable apuntador a hijo1.
var $hijo1_cont; // Contador de hijo1.
// Constructor:
function principal ()
{
$this->nombre = "";
$this->phijo1 = array();
$this->hijo1_cont = 0;
}
// Carga de datos general:
function Carga()
{
$this->nombre = "Test";
// Empezamos con los "hijos":
$this->phijo1[$this->hijo1_cont] = new hijo1();
$this->phijo1[$this->hijo1_cont]->nom_hijo1 = "HOLA SOY EL PRIMER HIJO";
// Empezamos con los "nietos";
$this->phijo1[$this->hijo1_cont]->obj_hijo1 = new hijo2();
$this->phijo1[$this->hijo1_cont]->obj_hijo1[0]->nom_hijo2 = "HOLA SOY JUAN";
$this->phijo1[$this->hijo1_cont]->obj_hijo1[1]->nom_hijo2 = "HOLA SOY PEDRO";
// Aumentar contador:
$this->hijo1_cont++;
// Otro ejemplo:
$this->phijo1[$this->hijo1_cont] = new hijo1();
$this->phijo1[$this->hijo1_cont]->nom_hijo1 = "HOLA SOY EL SEGUNDO HIJO";
$this->phijo1[$this->hijo1_cont]->obj_hijo1 = new hijo2();
$this->phijo1[$this->hijo1_cont]->obj_hijo1[0]->nom_hijo2 = "HOLA SOY ANA";
$this->phijo1[$this->hijo1_cont]->obj_hijo1[1]->nom_hijo2 = "HOLA SOY ISABEL";
$this->hijo1_cont++;
}
// Visualizar los datos por pantalla:
function Vis()
{
echo("Nombre Principal: ".$this->nombre."<br />");
for($i=0;$i<$this->hijo1_cont;$i++)
{
echo("Nombre Hijo 1: ".$this->phijo1[$i]->nom_hijo1."<br />");
}
}
}
?>
<html>
<head></head>
<body>
<?php
$ej = new principal();
$ej->Carga();
$ej->Vis();
?>
</body>
</html>
--------------------------------------------------
La salida por pantalla, en cambio, es la siguiente:
Warning: Cannot use a scalar value as an array in D:\Software\Web\xampp\htdocs\eb\temp\array_test.php on line 56
Warning: Cannot use a scalar value as an array in D:\Software\Web\xampp\htdocs\eb\temp\array_test.php on line 57
Warning: Cannot use a scalar value as an array in D:\Software\Web\xampp\htdocs\eb\temp\array_test.php on line 67
Warning: Cannot use a scalar value as an array in D:\Software\Web\xampp\htdocs\eb\temp\array_test.php on line 68
Nombre Principal: Test
Nombre Hijo 1: HOLA SOY EL PRIMER HIJO
Nombre Hijo 1: HOLA SOY EL SEGUNDO HIJO
He estado mirando por internet, pero no encuentro solución al problema. Alguna idea???
Gracias
Estoy intentando crear un array de array de la siguiente forma pero me da un error. El código es el siguiente:
class hijo2
{
var $nom_hijo2; // Objeto hijo;
// Constructor:
function hijo2()
{
$this->nom_hijo2 = "";
}
}
class hijo1
{
// Test array de arrays:
var $nom_hijo1;
var $obj_hijo1;
var $hijo2_cont; // Contador de hijo2.
// Constructor:
function raiz()
{
$this->nom_hijo1 = "";
$this->obj_hijo1 = array();
$this->hijo2_cont = 0;
}
}
class principal
{
var $nombre; // Nombre de la clase principal;
var $phijo1; // variable apuntador a hijo1.
var $hijo1_cont; // Contador de hijo1.
// Constructor:
function principal ()
{
$this->nombre = "";
$this->phijo1 = array();
$this->hijo1_cont = 0;
}
// Carga de datos general:
function Carga()
{
$this->nombre = "Test";
// Empezamos con los "hijos":
$this->phijo1[$this->hijo1_cont] = new hijo1();
$this->phijo1[$this->hijo1_cont]->nom_hijo1 = "HOLA SOY EL PRIMER HIJO";
// Empezamos con los "nietos";
$this->phijo1[$this->hijo1_cont]->obj_hijo1 = new hijo2();
$this->phijo1[$this->hijo1_cont]->obj_hijo1[0]->nom_hijo2 = "HOLA SOY JUAN";
$this->phijo1[$this->hijo1_cont]->obj_hijo1[1]->nom_hijo2 = "HOLA SOY PEDRO";
// Aumentar contador:
$this->hijo1_cont++;
// Otro ejemplo:
$this->phijo1[$this->hijo1_cont] = new hijo1();
$this->phijo1[$this->hijo1_cont]->nom_hijo1 = "HOLA SOY EL SEGUNDO HIJO";
$this->phijo1[$this->hijo1_cont]->obj_hijo1 = new hijo2();
$this->phijo1[$this->hijo1_cont]->obj_hijo1[0]->nom_hijo2 = "HOLA SOY ANA";
$this->phijo1[$this->hijo1_cont]->obj_hijo1[1]->nom_hijo2 = "HOLA SOY ISABEL";
$this->hijo1_cont++;
}
// Visualizar los datos por pantalla:
function Vis()
{
echo("Nombre Principal: ".$this->nombre."<br />");
for($i=0;$i<$this->hijo1_cont;$i++)
{
echo("Nombre Hijo 1: ".$this->phijo1[$i]->nom_hijo1."<br />");
}
}
}
?>
<html>
<head></head>
<body>
<?php
$ej = new principal();
$ej->Carga();
$ej->Vis();
?>
</body>
</html>
--------------------------------------------------
La salida por pantalla, en cambio, es la siguiente:
Warning: Cannot use a scalar value as an array in D:\Software\Web\xampp\htdocs\eb\temp\array_test.php on line 56
Warning: Cannot use a scalar value as an array in D:\Software\Web\xampp\htdocs\eb\temp\array_test.php on line 57
Warning: Cannot use a scalar value as an array in D:\Software\Web\xampp\htdocs\eb\temp\array_test.php on line 67
Warning: Cannot use a scalar value as an array in D:\Software\Web\xampp\htdocs\eb\temp\array_test.php on line 68
Nombre Principal: Test
Nombre Hijo 1: HOLA SOY EL PRIMER HIJO
Nombre Hijo 1: HOLA SOY EL SEGUNDO HIJO
He estado mirando por internet, pero no encuentro solución al problema. Alguna idea???
Gracias
Valora esta pregunta


0