array_multisort
Ordena múltiples matrices, o matrices
multi-dimensionales
Descripción
boolarray_multisort
arraymatriz1
mixedarg
mixed...
array...
&return.success;
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.
Ordenamiento de varias matrices
]]>
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.
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)
}
]]>
Ordenamiento de una matriz multi-dimensional
]]>
En este ejemplo, después del ordenamiento, la primera
matriz contendrá 10, 100, 100, "a" (fue ordenada como
cadenas en orden ascendente), y la segunda tendrá 1, 3,
"2", 1 (ordenada como números, en orden descendiente).
array(4) {
[0]=> string(2) "10"
[1]=> int(100)
[2]=> int(100)
[3]=> string(1) "a"
}
[1]=> array(4) {
[0]=> int(1)
[1]=> int(3)
[2]=> string(1) "2"
[3]=> int(1)
}
}
]]>
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:
Las datos como una matriz, llamada
datos. Ésta se obtendría
usualmente, por ejemplo, mediante un ciclo con
mysql_fetch_assoc.
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.
$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:
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.
]]>
&example.outputs;
Alpha
[1] => atomico
[2] => banco
[3] => Beta
)
]]>