Ordenar arrays asociativos en otro array con PHP

Hay algunas veces en las que disponemos de un array que contiene a su vez varios arrays asociativos. Y que, a su vez, estos pueden contener más información. Como por ejemplo los datos obtenidos tras realizar una consulta a la base de datos.

Es posible que dicho array esté cacheado y que, por ello, no queramos atacar a la base de datos para ordenar esos resultados. Es decir, que queramos ordenar la información pero sin tener que modificar nada en la base de datos. En esta situación, nos vendría genial poder ordenar los arrays asociativos que contenga dicho array de alguna forma fuera de la base de datos. Todo ello en base a cada uno de los valores que contenga una de las claves de los mismos.

Todo esto, podemos verlo mucho más claro a través de un ejemplo. Pongamos que tenemos un array que contiene nombres y apellidos y queremos ordenar esa información. Para ello deberemos recurrir a un array como, por ejemplo, el siguiente:


$resultados = array(

array(

      'id' => 1,
      'nombre' => 'Enjuto',
      'apellido' => 'Mojamuto'

     ),

array(

      'id' => 2,
      'nombre'  => 'Marlo',
      'apellido'  => 'Brando'

     )

);

Funciones de PHP

Pra realizar esta misma tarea, en PHP disponemos de múltiples funciones. Entre tantas funciones destaca una: la función usort(). Esta función de PHP sirve para ordenar elementos dentro de una base de datos en base a una función de comparación. Este es un criterio que nosotros mismos podemos especificar según los resultados que nos interese obtener. Por lo que si queremos obtener diferente información, podemos ordenar los datos de la base de datos de maneras distintas.

Por ejemplo, si quisiéramos ordenar los datos contenidos en la base de datos según la clave ID, en orden descendiente; deberíamos ejecutar una función de un aspecto similar a la siguiente:


function comparar($x, $y){

          if ( $x['id'] == $y['id'] )
             return 0;
          else if ( $x['id'] > $y['id'] )
             return -1;
          else
             return 1;

}

Ahora, para que usort() pueda utilizar función, deberemos llamarle e indicarle que haga la acción que queremos. De otra manera, usort() no sabrá qué es lo que tiene que hacer ni de dónde tiene que obtener esa información. Pero facilitarle las cosas a la función usort() bastará con ejecutar un código similar a este:


//si no estamos en un entorno Orientado a Objetos
usort($resultados, array('comparar'));

//si estamos en un entorno Orientado a Objetos
usort($resultados, array('nombreDeClase','comparar'));

Una vez hayas ejecutado el código que te indicamos, tus arrays estarán ordenados. Y, para ello, no habrás tenido que realizar ningún tipo de modificación en el contenido de tu base de datos.

¿Sabes cómo crear consultas select count en PHP? Para ampliar tus conocimientos sobre PHP, sigue de cerca nuestro blog tecnológico.

Compartir
Lidia Fernandes
Etiquetas PHP

Artículos recientes

  • Sistemas TI

¿Qué es el percentil 95 y para qué se utiliza?

Generalmente utilizamos los percentiles para referirnos al crecimiento de los bebés. Pero, además de recurrir al percentil 95 para evaluar…

22 mayo, 2019 10:00
  • SEO

Mejora el rendimiento de tu WordPress con plugins WPO

Aunque optimizar un sitio web requiere de técnicas WPO que ayuden a minimizar el peso de los elementos de la…

15 mayo, 2019 10:00
  • General

10 años de servicios en la nube

Para nosotros hoy no es un día cualquiera. Tal día como hoy, un 8 de mayo de 2009, Linube vino…

8 mayo, 2019 10:00
  • Sistemas TI

¿Qué es un FQDN o ruta de red?

Al igual que sucede, por ejemplo, con los crawlers que al visitar una web lo único que pueden ver es…

2 mayo, 2019 10:00
  • Sistemas TI

DRS, la mejor forma de contar con un CPD secundario

Puesto que cada vez almacenamos mayor cantidad de información en dispositivos informáticos, ya estén o no conectados a internet, cobra…

24 abril, 2019 10:00
  • SEO

Optimiza tu sitio web con nuestro servicio de WPO

A la hora de tener un sitio web no basta solo con centrarse en el diseño. Existen otros factores que…

17 abril, 2019 10:00