Bienvenidos sean a este post, hoy veremos una funcion para los arrays.
Esta funcion nos permite ordenar internamente uno o varios arrays e inclusive los multidimensionales, veamos como es su sintaxis:
array_multisort(array_1[, orden, tipo], array_2,
...,
array_N)
Podremos agregar todos los arrays que queramos pero solo al primero podemos aplicar de forma opcional el orden y su tipo, los restantes arrays se agregaron despues de estos y a estos se le aplicara las opciones del primer array, antes de pasar al ejemplo mencionemos las constantes que disponemos para ordenar el primer array:
SORT_ASC, sera para ordenar de forma ascendenteSORT_DESC, ser para ordenar de forma descendente
Si lo omitimos sera SORT_DESC, pasemos a mencionar las constantes que disponemos para el tipo de orden:
SORT_REGULAR, compara los elementos de forma normal sin cambiar los tiposSORT_NUMERIC, compara los elementos de forma numericaSORT_STRING, compara los elementos alfabeticamenteSORT_LOCALE_STRING, compara los elementos alfabeticamente pero en base a la configuracion locaal del equipoSORT_NATURAL, compara los elementos alfabeticamente de orden «natural»SORT_FLAG_CASE, se usa para ordenar sin considerar las mayusculas y minusculas
Como dijimos y al igual que el anterior se pueden omitir y en caso de ser asi utilizara automaticamente a SORT_REGULAR, con esto comentado vamos a analizar un ejemplo para entender como trabaja y para ello crearemos un nuevo archivo con el nombre de array.php y le agregaremos el siguiente codigo:
array.php
<?php
$a = array(10,100,100,0);
$b = array(1,3,4,2);
array_multisort($a, $b);
print_r($a);
print_r($b);
?>
Primero definiremos dos arrays con sus propios datos, luego aplicaremos la funcion a las dos arrays, para finalmente mostrar nuevamente a las variables:
$ php array.php
Array
(
[0] => 0
[1] => 10
[2] => 100
[3] => 100
)
Array
(
[0] => 2
[1] => 1
[2] => 3
[3] => 4
)
$
Observen el primer caso donde lo ordeno como corresponde de forma regular pero en el segundo caso no lo ordeno sino que lo ordeno en base a las posiciones ordenadas anteriormente, tomemos el codigo anterior y cambiemos esta linea:
array_multisort($a, $b);
De la siguiente manera:
array_multisort($a, SORT_DESC, SORT_NUMERIC, $b);
Aca le decimos que lo ordene de otra forma, si volvemos a probar el codigo obtendremos esta salida:
$ php array.php
Array
(
[0] => 100
[1] => 100
[2] => 10
[3] => 0
)
Array
(
[0] => 3
[1] => 4
[2] => 1
[3] => 2
)
$
Ahora cambio el orden del primero y esto afecto al siguiente tambien, esto esta muy bien con arrays unidimensionales pero que sucede con array multidimensionales? bueno vamos a trabajar con ello y para eso modificaremos el codigo anterior de la siguiente manera:
<?php
$a = array(
array(10,100,100,0),
array(1,3,4,2)
);
array_multisort($a[0], SORT_ASC, SORT_NUMERIC, $a[1]);
print_r($a);
?>
En este caso crearemos un solo array que contenga los dos arrays, y el segundo cambio es la hora de pasarlo a la funcion observen que pasamos cada una de las posiciones que tienen asignado en el array, para finalmente mostrarlo nuevamente, veamos como es su salida:
$ php array.php
Array
(
[0] => Array
(
[0] => 0
[1] => 10
[2] => 100
[3] => 100
)
[1] => Array
(
[0] => 2
[1] => 1
[2] => 3
[3] => 4
)
)
$
Al igual que en el caso anterior el segundo array se ordena en base a como se ordena el primero, pero la diferencia radica en como pasarlo, recuerden que siempre los arrays que agreguemos detras del primero se ordenaran en base a como se ordeno el primero.
En resumen, hoy hemos visto a array_multisort, que es, para que sirve, como se utiliza, y un par de ejemplos practicos para ver como trabaja, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
