Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/07/2012, 14:24
rbczgz
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Dividir array en grupos determinando el tamaño de los mismos por una variable

Hola amig@s,

Tengo una situación para la que no he podido encontrar solución por más que he buscado. Es la siguiente:

Necesito actualizar varios registros de una BD, de manera automática mediante un script con un cron, hasta ahí todo claro.

El problema viene al intentar programar el script. La cosa es así, recibo todos los registros que necesito actualizar en en un array bidimensional, entonces para recorrer el array, debería emplear dos foreach anidados:

Código PHP:
Ver original
  1. $arrayprincipal = array(); //Por plantearlo de una forma simple
  2.  
  3. foreach ($arrayprincipal as $arraysecundario) {
  4.  
  5.         foreach ($arraysecundario as $elemento) {
  6.  
  7.  
  8. echo $elemento."<br>"; //aquí los muestro, pero en la realidad, actualizo los registros
  9.  
  10.         }
  11.  
  12. }

Es decir, el problema no está en recorrerlos, que creo está bien, el problema es que necesito dividir el array en "trozos" de un tamaño dado por una variable, por poner un ejemplo, el array tiene 250 elementos y necesito dividirlo en trozos del tamaño definido por la variable, para después, actualizar uno de los campos de cada registro de cada grupo por un valor diferente, dado por otra variable. Ejemplo:

Código PHP:
Ver original
  1. $tamanio = 15; // El tamaño de cada grupo
  2.  
  3. $arrayprincipal = array(); //Por plantearlo de una forma simple
  4.  
  5. foreach ($arrayprincipal as $arraysecundario) {
  6.  
  7.         foreach ($arraysecundario as $elemento) {
  8.  
  9.  
  10. mysql_query("UPDATE tabla SET elemento='$elemento' WHERE id=$elementodos[id]")
  11. //Aquí $elementodos[] es otro array, pero unidimensional, por eso accedo a él por su indice directamente
  12.  
  13.         }
  14.  
  15. }


Lo he intentado con array_slice, pero tampoco me funciona:

Código PHP:
Ver original
  1. $tamanio = 15; // El tamaño de cada grupo
  2.  
  3. $arrayprincipal = array(); //Por plantearlo de una forma simple
  4.  
  5. foreach ($arrayprincipal as $arraysecundario) {
  6.  
  7. $arraysecundario = array_slice($arraysecundario, 0, $tamanio);
  8.  
  9.         foreach ($arraysecundario as $elemento) {
  10.  
  11.  
  12. mysql_query("UPDATE tabla SET elemento='$elemento' WHERE id=$elementodos[id]")
  13. //Aquí $elementodos[] es otro array, pero unidimensional, por eso accedo a él por su indice directamente
  14.  
  15.         }
  16.  
  17. }

Total, que no tengo ni idea de cómo dividir un array en arrays más pequeños de un tamaño dado y ahora mismo no tengo demasiado claro ni lo que debo hacer, por lo que agradeceré cualquier sugerencia.

Muchas gracias a tod@s por anticipado.

.