Archivo de la etiqueta: ordenar matrices

Ordenar matrices multidimensionadas

Hace ya un tiempo que no os escribo nada, pero voy a intentar subsanarlo en la medida que vaya creando cosas nuevas..

Llevaba hace unas semanas realizando un buscador para www.dulcesfamosas.com, y claro puedes hacerlo en plan cutre, después de mucho indagar por la red, encontré esta función que al final ha sido la mas útil de todas. Mi idea era que a partir de un porcentaje de similitud de letras ordenara toda la matriz, esto que parece una tontería no lo es, ya que usando las funciones típicas de php no es suficiente, todas ordenan sobre vectores, no matrices multidimensionadas.

Imaginaros que tengo esta matriz:

<?php
$lista[n][id]
$lista[n][porcen]
$lista[n][nombre]
$lista[n][fecha]
?>

Donde N es un numero que es la posición de la matriz

Seria muy fácil ordenar por nombres o fechas en un QUERY la idea es meterlo todo en una matriz y luego ordenar a mi antojo, así que me encontré con esta función en un foro, y que me perdonen porque lo cogí hace semanas y no se donde estaba..

<?php
function ordenar_matriz_multidimensionada($m,$ordenar,$direccion) {
    usort($m, create_function('$item1, $item2', 'return strtoupper($item1[\'' . $ordenar . '\']) ' . ($direccion === 'ASC' ? '>' : '<') . ' strtoupper($item2[\'' . $ordenar . '\']);'));
    return $m;
}
?>

y os explico rápidamente…

<?php
$m //es vuestra matriz
$ordenar //es el campo a ordenar, en mi caso es porcen
$direccion //aquí podéis elegir de forma ASC o DESC
?>

Si tenéis cualquier duda, no dudéis en comentármelo, es mas sencillo de lo que parece..

En esta web tenéis una demostración del resultado de todo este documento.
Demo: Demostración ordenar matrices multidimensionadas

Share