X

Truco PHP: array_merge_recursive con claves int

En un proyecto personal que estoy desarrollando me ha surgido un problema al que nunca me había enfrentado, ya que al usar la función array_merge_recursive para unir arrays, no se lleva bien cuando las claves son valores int, ya que el método las ignora totalmente.

La necesidad que me surge es unir arrays con claves idénticas para luego aplanarlos uniendo los valores que son idénticos.Todos los días se generan unos report y al realizar unos filtros quiero unir los valores de esos report para realizar un informe agregado de la información diariamente, semanalmente, quincenal o mensualmente. En mi caso de uso los valores de las claves son códigos HTTP, por los que los trato como valores enteros y he tenido que aplicar un pequeño truco.

Por ejemplo teniendo dos arrays como los siguientes:

$a = array(
    200 => array("url1","url2"),
    300 => array("url3")
);
$b = array(
    200 => array("url4", "url5"),
    300 => array("url6")
);

Mi objetivo sería conseguir otro array con la siguiente estructura, para después aplanarlos con otra función.

$c = array(
    200 => array(
          0 =>array("url1","url2"),
          1 => array("url4", "url5")
    300 => array(
          0 => array("url3"),
          1 => array("url6")
);

Para finalmente conseguir el siguiente resultado, que es el objetivo de mi caso de uso.

$result = array(
    200 => array("url1","url2", "url4","url5"),
    300 => array("url3","url6")
);

Solución al problema

Básicamente la solución que he encontrado indagando en el gran StackOverFlow es añadir un prefijo y eliminarlo el prefijo antes de realizar la operación con la función array_merge_recursive, convirtiendo las claves en strings y volviendo a transformar a enteros. Os comparto el GIST con las funciones necesarias para aplicar esta operación

Espero que os resulte útil, Es un truquito facil, sencillo y para toda la familia 🙂

Categorías: BackendDesarrollo Web
Tags: phptricks
alonsus91 :Joven ingeniero en Informática especializado en Ingeniería Web apasionado por las nuevas tecnologías y las últimas novedades en informática e Internet con ansias de conocer a fondo el mercado laboral y aportarle todos mis conocimientos.
Disqus Comments Loading...

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestro sitio web. Si continúa utilizando este sitio asumiremos que está de acuerdo.