¿Por que se almacenan resultados utilizando diferente nombre para almacenar el array PHP?

La idea es que se haga una consulta 5 veces a la base de datos utilizando la misma funcion solo cambiando el nombre del pais en la consulta sql.

Este es mi codigo

class.php

  public function MuestraDatos($pais)
    {
       $sql = "select * from demografia where continente = '".$pais."' order by 'decada' ASC";
        $conexion = $this->conexion;
       $smtm = $conexion->prepare($sql);
      $smtm->execute();
         while($fila = $smtm->fetch())
         {
            $this->elementos[] =  $fila;
         }
         return $this->elementos;
    }

INDEX.PHP

require_once 'class/class.php';
    $Actividad1Obj = new Actividad1;
    //$MostrandoDatosAfrica = $Actividad1Obj->MuestraDatos('AFRICA');
     $MostrandoDatosAmerica = $Actividad1Obj->MuestraDatos('AMERICA');
      $MostrandoDatosAsia = $Actividad1Obj->MuestraDatos('asia');
       $MostrandoDatosEuropa = $Actividad1Obj->MuestraDatos('EUROPA');
        $MostrandoDatosMundo = $Actividad1Obj->MuestraDatos('MUNDO');
    print_r($MostrandoDatosEuropa);
    exit;

Y este es mi resultado

Array ( [0] => Array ( [id] => 8 [0] => 8 [decada] => 1950 [1] => 1950 [poblacion] => 331 [2] => 331 [continente] => AMERICA [3] => AMERICA ) [1] => Array ( [id] => 15 [0] => 15 [decada] => 1950 [1] => 1950 [poblacion] => 1436 [2] => 1436 [continente] => ASIA [3] => ASIA ) [2] => Array ( [id] => 22 [0] => 22 [decada] => 1950 [1] => 1950 [poblacion] => 547 [2] => 547 [continente] => EUROPA [3] => EUROPA ) )

Al hacer el print_r de los datos de europa deberia mostrarme los datos de europa unicamente pero me muestra todos los que estan por encima ademas, podria cambiar el nombre de la funcion y crear una funcion por cada pais, pero preferiria acortar el codigo todo lo posible y ademas me interesa mas saber el por que se me almacenan también los superiores.

Respuesta

Deberías crear un objeto para cada país:

$objAfrica = new Actividad1;
$datosAfrica = $objAfrica->MuestraDatos('Africa');
print_r($datosAfrica);
echo "--------------------------------------------------------";
echo "<br>";
$objAmerica = new Actividad1;
$datosAmerica = $objAmerica->MuestraDatos('America');
print_r($datosAmerica);

Si bueno, ya conocía esa solución para que funcione, pero lo que me gustaría saber sobre todo es porque se almacenan los datos creando un solo objeto.

Es un PRINCIPIO de la Programación Orientada a Objetos.

Entiendo que quieras que con un solo objeto mostrara el resultado para ahorrarte codigo; pero no me cuadra.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas