Foros del Web » Programando para Internet » PHP »

Llenar array con ceros dependiendo de la clave

Estas en el tema de Llenar array con ceros dependiendo de la clave en el foro de PHP en Foros del Web. Buen día amigos, tengo una consulta en la base de datos que me arroja los sgtes. resultados: MES | TOTAL_VENTA 1 | 30 2 | ...
  #1 (permalink)  
Antiguo 02/06/2011, 15:49
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 2 meses
Puntos: 9
Llenar array con ceros dependiendo de la clave

Buen día amigos, tengo una consulta en la base de datos que me arroja los sgtes. resultados:

MES | TOTAL_VENTA
1 | 30
2 | 40
3 | 50
5 | 60
8 | 70

el cual con un foreach obtengo los datos del MES y TOTAL_VENTA

Código PHP:
foreach($mydata as $row) {
    
    
$control[] = intval($row['TOTAL_VENTA']);
    

Con esto tengo un arreglo asi:

array([0]=>30,[1]=>40,[2]=>50,[3]=>60,[4]=>70);

Mi pregunta es, ¿como puedo llenar este array para que encaje con los 12 meses del mes según el valor de $row['MES'] ?

Osea si MES vale 8 debería estar en el key [7], no en el [4], por eso mi idea de ir llenando los meses sobrantes con valor 0, para que al final quede algo como:

array([0]=>30,[1]=>40,[2]=>50,[3]=>0,[4]=>60,[5]=>0,[6]=>0,[7]=>70,[8]=>0,[9]=>0,[10]=>0,[11]=>0);

Pensaba en algo así:

Código PHP:

for($i=0$i<12$i++){
    
        if((
intval($row['MES']) - 1) == $i) {
    
            
$control[] = intval($row['TOTAL_VENTA']);
            
        }  else {
        
            
$control[] = 0;
        
        }
        
    } 
Pero como lo aplico con el foreach?, espero su ayuda , gracias.
__________________
Quitenme la vida pero no la bebida.
  #2 (permalink)  
Antiguo 02/06/2011, 15:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Llenar array con ceros dependiendo de la clave

Yo no entiendo la complicación, con foreach() es exactamente igual.
Código PHP:
foreach ($variable as $i => $value)
{

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 02/06/2011, 15:58
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 2 meses
Puntos: 9
Respuesta: Llenar array con ceros dependiendo de la clave

¿Pero como lo comparo 12 veces?
__________________
Quitenme la vida pero no la bebida.
  #4 (permalink)  
Antiguo 02/06/2011, 16:03
Avatar de rikardoz  
Fecha de Ingreso: abril-2011
Ubicación: En mi casa
Mensajes: 165
Antigüedad: 12 años, 11 meses
Puntos: 46
Respuesta: Llenar array con ceros dependiendo de la clave

te doy una idea:
Código PHP:
<? 

$ventas 
= array(100,500,333,112,122);
$mitotal = array();
for(
$i=0$i<12$i++){ 
     if(empty(
$ventas[$i]))
    {
        echo 
"este mes es  cero <br>";
        
array_push($mitotal,"0");
    }
    else
    {
        echo 
"es otro valor: $ventas[$i] <br>";
        
array_push($mitotal,$ventas[$i]);
    }
         
    } 

print_r($mitotal);

?>
me imprime algo como querias si no prueba cambia las variables por tus variables de tu DB, saludos
__________________
Agregadecer no cuesta nada O SI?
  #5 (permalink)  
Antiguo 02/06/2011, 16:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Llenar array con ceros dependiendo de la clave

Pienso que no es necesario comparar 12 veces, si el limite del arreglo es siempre 12, entonces la función para rellenar dichos valores debería ser array_pad().

Consulta el manual.
http://php.net/array_pad
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 02/06/2011, 16:34
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 2 meses
Puntos: 9
Respuesta: Llenar array con ceros dependiendo de la clave

gracias pateketrueke, lo logré con array_pad() , aquí dejo la solución:

Código PHP:

foreach ($mydata as $i => $row) {     
    
$control[$row['MES']] = intval($row['TOTAL_VENTAS']);            
}

$newArr array_pad(array(), 120); 
$newArr =$control+$newArr
ksort($newArr); 

print_r($newArr); 
__________________
Quitenme la vida pero no la bebida.

Etiquetas: clave, dependiendo, llenar, cero
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 10:41.