Dividir un array en partes con php
Dividir un array en partes para procesarlo es un ejemplo más que afirma que dividiendo un problema en pequeñas partes es la solución para vencer. Con PHP esto se puede conseguir fácilmente.
Cuando necesitas crear y ejecutar procesos grandes como, por ejemplo, la lectura de un archivo XML de miles de productos para cargarlo en un sitio web, en la mayoría de ocasiones el servidor no permite esta ejecución por limitaciones en sus parámetros.
Con esta ejecución tan grande es muy probable que el tiempo de ejecución se agote.
Una solución rápida es solicitar al servidor ampliar el tiempo de ejecución pero, debes saber que es posible que tu servicio de alojamiento no esté de acuerdo con este cambio por motivos de seguridad.
Es en este momento cuando tienes que pensar en una solución técnica. Es posible que tu código se pueda optimizar. Divide y vencerás.
En este artículo te voy a enseñar como dividir un arreglo en partes con PHP con el objetivo de procesarlo sin saturar el servidor.
En la librería de funciones de PHP tienes disponible una función muy útil que te permite dividir un arreglo en fragmentos. Estoy hablando de array_chunk().
En el ejemplo que voy a ilustrar estaré utilizando esta función para dividir un arreglo.
Estaré extrayendo de una base de datos de un PrestaShop los productos que contiene y lo estaré guardando en un array que he llamado $products con el objetivo de mostrarlos en pantalla de 5 en 5.
Para dividir este arreglo de productos estoy empleando algo como lo siguiente:
$parts = array_chunk($products, 5, true);
Utilizo la función array_chunk() con 3 parámetros: el arreglo a tratar, el tamaño de cada fragmento y en el tercer parámetro lo establezco a true para preservar las claves del arreglo.
Para recorrer cada parte hago lo siguiente:
foreach ($parts[$step] as $item) {
//Proceso por lotes
}<
Donde la variable $step representa el paso del proceso o la parte en la que debe ejecutarse.
Lógicamente, dentro del foreach debes ejecutar tu código.
Generalmente, la información que viene en el arreglo y que estás leyendo es para guardarla en una base de datos.
Realizar esta operación en partes te va a resultar muy útil cuando tienes que manejar mucha información y el servidor de alojamiento no te lo permite.
En el ejemplo en funcionamiento puedes ver como utilizo array_chunk para crear una paginación simple. Se que no es el mejor ejemplo ya que esta función es ideal utilizarla en un proceso no visual como el ejemplo que comenté al principio.
hola no he entendido de a amucho quiero imprimir tres elementos de una lista de nueve de esta foma con chunk la ide es hace un carousel que contenga por paginación tres elementos de un array
Hola… tengo una duda. He leído que array_chunk solo funciona para valores pares, es decir tengo un arreglo de 11 registros y quiero dividir lo de tres en tres. Podrías ayudarme?
Hola,
Gracias por tu mensaje.
Si esto es así, con razón he tenido problemas con algún script que se olvida de ejecutar la última parte seguramente debido a que el array contiene un número de elementos impar.
Solución rápida no tengo, pero me gustaría encontrarla y lo estaré investigando.
Saludos
Hola he visto tu explicacion y me ha gustado. Pero la cuestion es que quiero dividir un array manualmente en 3 variables, es decir, en 3 arrays. Lo que quiero decir es que, de un array de 9 numeros, quiero guardar un tercio del array en 3 arrays nuevos, es decir, 3 partes para cada array creado. Estoy en la duda y no se como hacerlo. Podrias ayudarme?
Hola,
la función array_chunk puede ayudarte con esta tarea. En tu caso particular tan solo la debes usar con:
$parts = array_chunk($products, 3, true);
Saludos