Foros del Web » Programando para Internet » PHP »

Problema con array

Estas en el tema de Problema con array en el foro de PHP en Foros del Web. Tengo este array. array = Array(50,180,40,15,153,180,10); El límite es 200. Sumo cada elemento progresivamente. Cuando la suma supera 200, la suma es 0. Marco ese ...
  #1 (permalink)  
Antiguo 24/02/2015, 17:07
Avatar de Manuellama  
Fecha de Ingreso: noviembre-2006
Ubicación: Zafra, Extremadura, Spain, Spain
Mensajes: 174
Antigüedad: 17 años, 5 meses
Puntos: 10
Problema con array

Tengo este array.

array = Array(50,180,40,15,153,180,10);


El límite es 200.

Sumo cada elemento progresivamente. Cuando la suma supera 200, la suma es 0. Marco ese índice. Sigo con el siguiente etc.

El problema que tengo es que si la suma es inferior a 200, pero el siguiente elemento hace que la supere(180+40, por ejemplo), calcula mal y me incluye el siguiente elemento en el item actual.

Es para hacer un paginador a4 según la altura de unos divs. Cada página aumentará hasta un límite.

Perdonad mi mala expresión. Llevo toda la tarde con esto y no soy capaz de resolverlo.
  #2 (permalink)  
Antiguo 24/02/2015, 17:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con array

Muestra cómo lo haces.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/02/2015, 18:12
Avatar de Manuellama  
Fecha de Ingreso: noviembre-2006
Ubicación: Zafra, Extremadura, Spain, Spain
Mensajes: 174
Antigüedad: 17 años, 5 meses
Puntos: 10
Respuesta: Problema con array

<?php
$array= array(50,180,40,15,153,180,10);
$i=0;
$suma=0;
$limite =200;
function limit($i,$array,$suma,$limite ){
if ($i<count($array)){
if ($suma<$limite){
$suma.=$array[$i];
$i++;
limit($i,$array,$suma,$limite );
}else{

print $i."<br>";
$i++;
$suma =0;
limit($i,$array,$suma,$limite );


}
}
}
limit($i,$array,$suma,$limite );
?>

Sé que está mal...El segundo elemento ya suma con el primero más de 200...
  #4 (permalink)  
Antiguo 25/02/2015, 07:52
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Problema con array

No entiendo ; como quieres hacer el paginador; cuantos registros quieres mostrar en cada pagina?
  #5 (permalink)  
Antiguo 25/02/2015, 07:56
Avatar de Manuellama  
Fecha de Ingreso: noviembre-2006
Ubicación: Zafra, Extremadura, Spain, Spain
Mensajes: 174
Antigüedad: 17 años, 5 meses
Puntos: 10
Respuesta: Problema con array

No importa el número de registros, siempre y cuando la suma total de las alturas de los elementos no supere el límite. Si lo supera, siguiente página.
  #6 (permalink)  
Antiguo 25/02/2015, 08:18
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Problema con array

prueba con este codigo :
Código PHP:
Ver original
  1. $array = array(50,180,40,15,153,180,10);
  2. $limit = 200;
  3. $acum  = 0;
  4. foreach($array as $value)
  5. {
  6.     $acum = $acum + $value;
  7.     if($acum <= $limit)
  8.     {
  9.         echo "No ha superado el limite{$acum}<br/>";
  10.     }
  11.     else
  12.     {
  13.         echo "Ha superado el limite{$acum}<br/>";
  14.         $acum = 0;//reinicio acumulador
  15.     }
  16. }
  #7 (permalink)  
Antiguo 25/02/2015, 08:24
Avatar de milciadesgonzalez  
Fecha de Ingreso: junio-2014
Ubicación: Paraguay
Mensajes: 34
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: Problema con array

prueba este también modifique algunas partes de la función..


Código PHP:
Ver original
  1. function limit($i, $array, $suma, $limite) {
  2.     if ($i < count($array) - 1) {
  3.        
  4.         if ($suma < $limite) {
  5.             $suma+=$array[$i];
  6.             $i++;
  7.             limit($i, $array, $suma, $limite);
  8.         }else{
  9.             print $i . "<br>";
  10.             $i++;
  11.             limit($i, $array, $suma, $limite);
  12.         }
  13.        
  14.     }
  15. }

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:44.