Urielmania
“El Mundo de Uriel… Pero la voz de todos”
“El Mundo de Uriel… Pero la voz de todos”
Pues se que la vida hoy en dia no es php y menos codeigniter , pero pues igual sigo utilizando para algunas cosas , aunque tengo que decir que ya hay algunas cosas que funcionan mejor con otra tecnologia y más si puedes pasar los datos o filtrar datos desde la bd pero bueno hay veces que todavia tenemos que trabajar con arreglos en php y pues siempre se me olvida cómo ordenarlos…
Las funciones básicas para esto son sort(), asort() , y pues no hay mucho que decir:
sort() ordena el array de manera ascendente, cogiendo los elementos de menor a mayor. Los parámetros son estos:
Existe la función opuesta rsort() con la misma sintaxis que ordena el array de manera descendente, de mayor a menor.
asort() ordena el array en orden ascendente, es decir, de menor a mayor ordenándolo por su valor. Vamos a ver los parámetros:
También existe la función opuesta, se llama arsort() y tiene la misma sintaxis, esta función ordena los arrays de forma descendente, de mayor a menor por el valor de los elementos.
Hasta aquí todo bien y normal, el problema pasa cuando quieres ordenar un array multidimensional por un valor específico del mismo , si bien hay una función «según» para esto array_multisort(). lo que realmente hace es ordenar los elementos de cada array secundario y lo que nosotros queremos es ordenar los elementos del array primario según el valor de un elemento de los arrays secundarios, que es algo bien distinto, espero que se entienda la diferencia.
Así que array_multisort()
no nos vale. La función que mejor nos va es usort() (acrónimo de user defined sort), pues permite ordenar el array por sus valores pero utilizando una función de comparación definida el usuario, es decir, por nosotros ?.
La función usort()
se utiliza pasando el array que queremos ordenar y el nombre de la función de comparación que se utilizará. PHP pasará a esta función dos parámetros, $a
y $b
, siendo cada uno un elemento del array, en nuestro caso $a
y $b
son a su vez arrays, arrays secundarios.
En php quedaría algo como:
usort($array, 'sort_by_orden'); function sort_by_orden ($a, $b) { return $a['orden'] - $b['orden']; }
Y si no lees la documentación de codeigniter como es mi caso… Pensarías que solo deberías hacer esto para usarla:
usort($srv_records, $this->comp_primary);
Pero lamentablemente esto no funciona así, y si pones eso te saldra un error por lo cual deberías leer la documentación o mejor aún simplemente hacer esto;
usort($srv_records, array($this,'comp_primary'));
Y listo ya puedes ordenar tus arreglos multideminsionales en codeigniter.
lo vi en https://cybmeta.com