Ver Mensaje Individual
  #6 (permalink)  
Antiguo 17/07/2012, 02:44
Avatar de cluster28
cluster28
 
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: Dividir array en grupos determinando el tamaño de los mismos por una varia

He hecho una simulación de lo que creo que quieres hacer.

Mira a ver si te vale.

Desde un array bidimensional de 100 arrays de 50 campos genero uno que contiene arrays con el límite dado y cada uno con el límite de campos indicado

Código PHP:
//Creo un array bidimensional de 100 arrays de 50 campos (en tu caso el que recuperes de BD)
for($i=0$i 100$i++)
{
    
$array_temp=array();
    
    for(
$j=0$j 50$j++)
    {
        
$array_temp["dato_".$j] = $j;    
    }
    
    
$array_total[]=$array_temp;
}

//Tamaño de los arrays a generar
$tamanio_array 15;
//Campos dentro de los arrays
$numero_campos 20;

//Inicio del contador de arrays
$n_array 1;
//Inicio de contador de array actual
$i 0;
//Inicio del array de los arrays divididos (resultado)
$array_dividido = array();

//Por cada array del array generado
foreach($array_total as $array_datos)
{
    
//Inicio del contador del campo actual
    
$j 0;
    
//Inicio del array temporal
    
$array_temporal = array();
    
//Por cada campo del array de datos
    
foreach($array_datos as $campo => $valor)
    {
        
//Pasamos el valor al array temporal con el mismo nombre de campo
        
$array_temporal[$campo] = $valor;
        
//Sumamos uno al contador del campo actual y lo comparamos con el límite de campos, si es igual rompemos el foreach
        
if(++$j == $numero_campos){ break; }
    }
    
//Pasamos el array temporal al array del resultado
    
$array_dividido[$n_array][] = $array_temporal;
    
//Sumamos uno al contador de arrays y lo comparamos con el límite de arrays, si es igual ponemos el contador a 0 
    //e incializamos el campo del siguiente array
    
if(++$i == $tamanio_array){ $i=0$n_array++; }
}

//mostrar_array
echo "<b>".__FILE__.":".__LINE__."</b><br><pre>".print_r($array_dividido,true)."</pre>";flush();