Hola,
 
Fijate bien: 
 Código PHP:
           for($i = 0; $i < $registros; $i++) {
            while($campo = mysql_fetch_array($consulta)) {
                for($i = 0; $i < count($campos); $i++) {
                    $dato[$i] = $campo[$campos[$i]];
                }
                $this->datos[] = $dato;
            }
        } 
    
  ¿Cuantos bucles for con indice $i ves? Yo veo 2. Ademas, esa estructura me suena muy mal. Si $registros es el numero de registros de $consulta, o no hace falta el for de fuera, o no hace falta el while (en mi modesta opinion). 
Espero haber sido de ayuda  
