PHP - array en orden alfabetico

 
Vista:

array en orden alfabetico

Publicado por StaBabel (2 intervenciones) el 02/06/2006 07:37:18
Hola tengo una duda..
Hice un buscador, que en vez de utilizar una base de datos, utiliza un array, la cosa es que al desplegar los resultados de la búsqueda, los despliega en el orden que está mi arreglo, pero necesito que se desplieguen en orden alfabético..

alguien me podría ayudar

xD THNX
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:array en orden alfabetico

Publicado por maxter (205 intervenciones) el 02/06/2006 12:45:04
Para eso te sirve la función array_multisort()

Saludos maxter
===================================

array_multisort
(PHP 4, PHP 5)

array_multisort -- Ordena múltiples matrices, o matrices multi-dimensionales
Descripción
bool array_multisort ( array matriz1 [, mixed arg [, mixed ... [, array ...]]] )

Devuelve TRUE si todo se llevó a cabo correctamente, FALSE en caso de fallo.

array_multisort() puede usarse para ordenar varias matrices al tiempo, o una matriz multi-dimensional por una o más dimensiones.

Las llaves asociativas (string) son conservadas, aunque las llaves numéricas son re-indexadas.

Las matrices de entrada son tratadas como columnas de una tabla que deberá ser ordenada por filas - de forma similar a la funcionalidad de una sentencia SQL ORDER BY. La primera matriz es considerada la primaria para el ordenamiento. Las filas (valores) en esa matriz que sean comparadas como iguales son ordenadas por la siguiente matriz de entrada, y así sucesivamente.

La estructura de argumentos de esta función es un poco inusual, pero flexible. El primer argumento debe ser una matriz. Subsecuentemente, cada argumento puede ser o una matriz o una bandera de ordenamiento de las siguientes.

Banderas de orientación del ordenamiento:

SORT_ASC - Ordenar ascendentemente

SORT_DESC - Ordenar descendentemente

Banderas de tipo de ordenamiento

SORT_REGULAR - Comparar elementos normalmente

SORT_NUMERIC - Comparar elementos numéricamente

SORT_STRING - Comparar elementos como cadenas

No pueden especificarse dos banderas de ordenamiento del mismo tipo luego de cada matriz. Las banderas de ordenamiento especificadas a continuación de un argumento matriz se aplican sólo a esa matriz - estos valores son restablecidos de vuelta a SORT_ASC y SORT_REGULAR antes de cada nuevo argumento matriz.

Ejemplo 1. Ordenamiento de varias matrices

<?php
$matriz1 = array("10", 100, 100, "a");
$matriz2 = array(1, 3, "2", 1);
array_multisort($matriz1, $matriz2);

var_dump($matriz1);
var_dump($matriz2);
?>

En este ejemplo, después del ordenamiento, la primera matriz contendrá los valores 10, "a", 100, 100. La segunda matriz contendrá 1, 1, "2", 3. Las entradas en la segunda matriz que correspondían a las entradas idénticas de la primera matriz (100 y 100) fueron ordenadas también.

array(4) {
[0]=> string(2) "10"
[1]=> string(1) "a"
[2]=> int(100)
[3]=> int(100)
}
array(4) {
[0]=> int(1)
[1]=> int(1)
[2]=> string(1) "2"
[3]=> int(3)
}



Ejemplo 2. Ordenamiento de una matriz multi-dimensional

<?php
$matriz = array(
array("10", 11, 100, 100, "a"),
array( 1, 2, "2", 3, 1)
);
array_multisort($matriz[0], SORT_ASC, SORT_STRING,
$matriz[1], SORT_NUMERIC, SORT_DESC);
var_dump($matriz);
?>

En este ejemplo, después del ordenamiento, la primera matriz se transformará a 10, 100, 100, 11, "a" (fue ordenada como cadenas en orden ascendente), y la segunda tendrá 1, 3, "2", 2, 1 (ordenada como números, en orden descendiente).

array(2) {
[0]=> array(5) {
[0]=> string(2) "10"
[1]=> int(100)
[2]=> int(100)
[3]=> int(11)
[4]=> string(1) "a"
}
[1]=> array(5) {
[0]=> int(1)
[1]=> int(3)
[2]=> string(1) "2"
[3]=> int(2)
[4]=> int(1)
}
}



Ejemplo 3. Ordenamiento de resultados de una base de datos

Para este ejemplo, cada elemento en la matriz datos representa una fila en una tabla. Este tipo de conjunto de datos es típico de los registros en una base de datos.

Datos de ejemplo:

volumen| edicion
-------+--------
67 | 2
86 | 1
85 | 6
98 | 2
86 | 6
67 | 7


Las datos como una matriz, llamada datos. Ésta se obtendría usualmente, por ejemplo, mediante un ciclo con mysql_fetch_assoc().

<?php
$datos[] = array('volumen' => 67, 'edicion' => 2);
$datos[] = array('volumen' => 86, 'edicion' => 1);
$datos[] = array('volumen' => 85, 'edicion' => 6);
$datos[] = array('volumen' => 98, 'edicion' => 2);
$datos[] = array('volumen' => 86, 'edicion' => 6);
$datos[] = array('volumen' => 67, 'edicion' => 7);
?>

En este ejemplo, ordenaremos por volumen descendientemente, y por edicion ascendentemente.

Tenemos una matriz de filas, pero array_multisort() requiere una matriz de columnas, así que usamos el código a continuación para obtener las columnas, y luego realizar el ordenamiento.

<?php
// Obtener una lista de columnas
foreach ($datos as $llave => $fila) {
$volumen[$llave] = $fila['volumen'];
$edicion[$llave] = $fila['edicion'];
}
// Ordenar los datos con volumen descendiente, edicion ascendiente
// Agregar $datos como el ultimo parametro, para ordenar por la llave comun
array_multisort($volumen, SORT_DESC, $edicion, SORT_ASC, $datos);
?>

El conjunto de datos está ordenado ahora, y lucirá de este modo:

volumen| edicion
-------+--------
98 | 2
86 | 1
86 | 6
85 | 6
67 | 2
67 | 7



Ejemplo 4. Ordenamiento insensible a mayúsculas/minúsculas

Tanto SORT_STRING como SORT_REGULAR son sensibles a mayúsculas/minúsculas, las cadenas que comienzan con una letra mayúscula vendrán antes que las cadenas con una letra minúscula.

Para realizar una búsqueda insensible a minúsculas y mayúsculas, asegúrese de que el orden sea determinado por una copia en minúsculas de la matriz original.

<?php
$matriz = array('Alpha', 'atomico', 'Beta', 'banco');
$matriz_minusculas = array_map('strtolower', $matriz);

array_multisort($matriz_minusculas, SORT_ASC, SORT_STRING, $matriz);

print_r($matriz);
?>

El resultado del ejemplo seria:

Array
(
[0] => Alpha
[1] => atomico
[2] => banco
[3] => Beta
)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:array en orden alfabetico

Publicado por StaBabel (2 intervenciones) el 05/06/2006 23:35:25
gracias me sirvió muchísimo tu información
xD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar