PHP - Agregar objeto a array

 
Vista:

Agregar objeto a array

Publicado por Caruso (27 intervenciones) el 20/01/2014 20:29:11
Hola de vuelta, en una consigna me piden un metodo agregarEquipo: Este método debe recibir un objeto del tipo OficinaEquipo como parámetro y agregarlo al atributo que contiene el array de objetos del tipo OficinaEquipo, tambiéndebe verificar que el equipo no se repita en el array. Una forma de verificar que no se repita de manera fácil, es utilizar el id del objeto que se recibe como índice del array.

Y no se me ocurre como desarrollarlo. La clase oficina es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class oficina{
    private $_idoficina;
    private $_nombre;
    private $_OficinaEquipo=array();
 
    public function getIdoficina(){
        return $this->_idoficina;
    }
    public function getNombre(){
        return $this->_nombre;
    }
    public function getOficinaEquipo(){
        $id=$this->_idoficina;
        $SQL="select * from oficinaequipo where idoficinaequipo='$id'";
        $oe=mysql_query($SQL);
        while ($row=mysql_fetch_object($oe)){
            $objetoOficinaEquipo=new oficinaequipo();
            $objetoOficinaEquipo->setEquipo($row->equipo);
            $objetoOficinaEquipo->setIdOficina($row->idoficina);
            $objetoOficinaEquipo->setIdOficinaequipo($row->idoficinaequipo);
            $OficinaEquipo[]=$objetoOficinaEquipo;
        }
        return $OficinaEquipo;
    }
    public function setIdoficina($idoficina){
        $this->_idoficina=$idoficina;
    }
    public function setNombre($nombre){
        $this->_nombre=$nombre;
    }
    public function __construct($idoficina,$nombre){
        $this->_idoficina=$idoficina;
        $this->_nombre=$nombre;
 
    }
Pense hacer:

1
2
3
4
5
6
public function agregarEquipo(oficinaequipo $Ooficinaequipo){
          $id=$this->getIdoficina();
        $this->_OficinaEquipo['equipo']=$Ooficinaequipo->getEquipo();
        $this->_OficinaEquipo['idoficinaequipo']=$Ooficinaequipo->getIdOficinaqeuipo();
        $this->_OficinaEquipo['idoficina']=$Ooficinaequipo->getIdOficina();
    }

No se si me pueden ayudar
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 xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Agregar objeto a array

Publicado por xve (6935 intervenciones) el 21/01/2014 07:41:09
Hola Caruso, nos faltaría ver la clase oficinaequipo, para ver que parámetros y funciones tiene... nos la puedes mostrar?
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

Agregar objeto a array

Publicado por Caruso (27 intervenciones) el 21/01/2014 19:42:33
Si como no es esta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
require_once $_SERVER['DOCUMENT_ROOT'] . '/sge/equipo/includes/Equipo.php';
class oficinaequipo{
    private $_idoficinaequipo;
    private $_idOficina;
    private $_equipo;
 
    public function getIdOficinaqeuipo(){
        return $this->_idoficinaequipo;
    }
    public function getIdOficina(){
        return $this->_idOficina;
    }
    public function getEquipo(){
        return $this->_equipo;
    }
    public function setIdOficinaequipo($idoficinaequipo){
        $this->_idoficinaequipo=$idoficinaequipo;
    }
    public function setIdOficina($idOficina){
        $this->_oficinaequipo=$idOficina;
    }
    public function setEquipo(equipo $equipo){
        $this->_equipo=$equipo;
    }
    public function __construct($idoficinaequipo,$idOficina,$equipo){
        $this->_idoficinaequipo=$idoficinaequipo;
        $this->_idOficina=$idOficina;
        $this->_equipo=$equipo;
    }
    public function insertar(){
        $bd=new BaseDeDatos();
        $this->_idoficinaequipo=$bd->getUltimoIdInsertadio();
        $SQL="insert into oficinaequipo (idoficinaequipo,idoficina,idequipo) values";
        $SQL.="('$this->_idoficinaequipo','$this->_idoficina','$this->_idequipo')";
 
        mysql_query($SQL) or die (mysql_error());
 
        }
        public function getAll(){
 
 
        $SQL="select * from oficinaequipo";
        $bd=new BaseDeDatos();
        $result=mysql_query($SQL);
        $SQL2="select * from equipo join oficinaequipo where equipo.idempleado=oficinaequipo.idempleado";
        // Buscamos todas las filas afectadas (Todos los empleados encotnrados)
        $query=mysql_query($SQL2);
        $row2=mysql_fetch_object($query);
        if(!$result) {
            die('No se ha podido ejecutar la consulta');
        }
 
        // Buscamos todas las filas afectadas (Todos los empleados encotnrados)
 
        while($row = mysql_fetch_object($result))
        {
            $this->_idoficinaequipo=$row->idoficinaequipo;
            $this->_idOficina=$row->idOficina;
            $e=new equipo();
            $e->setIdEquipo($row2->idequipo);
         //   $e->setEmpleado($row2->idempleado);
            $e->setDescripcion($row2->descripcion);
            $e->setDirip($row2->ip);
            $e->setDirmac($row2->mac);
 
            // Por cada empleado (fila) agregaremos datos al array que devolveremos
            $aItems[] = $e;
        }
 
        // Devolvemos el array
        return $aItems;
    }
}
 
?>
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

Agregar objeto a array

Publicado por Caruso (27 intervenciones) el 22/01/2014 07:53:51
vos decis que la clase oficinaequipo no responde bien a oficina? No habria que settear el objeto en vez de usar get?
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 Carolina

Agregar objeto a array

Publicado por Carolina (6 intervenciones) el 22/01/2014 14:26:15
Si quieres que $this->_OficinaEquipo sea un Array donde almacenar muchos equipos, la asignación que estás usando en el método agregarEquipo() te está agregando siempre uno solo (pisando el último agregado).
Si ya tienes creado el objeto oficinaequipo fuera de la clase oficina, sólo tendrías que agregarlo a tu Array $this->_OficinaEquipo mediante simple asignación. Y ya que quieres usar el ID del equipo como clave única, pues yo lo haría algo así:

1
2
3
4
5
6
7
8
9
public function agregarEquipo(oficinaequipo $Ooficinaequipo)
 {
  if (!array_key_exists($Ooficinaequipo->getIdOficinaqeuipo(), $this->_OficinaEquipo))
  {
   $this->_OficinaEquipo[$Ooficinaequipo->getIdOficinaqeuipo()] = $Ooficinaequipo;
   return true;
  }
  return false;
 }

Al usar el método, puedes saber si tuviste éxito accediendo así:
1
2
3
4
5
6
7
8
9
$resultado = $oficina->agregarEquipo($equipo);
if ($resultado)
{
 print "Agregado";
}
else
{
 print "El equipo ".$equipo->getIdOficinaqeuipo()." no fue agregado, pues ya existe.";
}

No sé si es lo que necesitabas, pero tal vez te sirva de guía.
Saludos!
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