Anuncios

Bienvenidos sean a este post, hoy veremos una funcion para los arrays.

Anuncios

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)
Anuncios

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 ascendente
  • SORT_DESC, ser para ordenar de forma descendente
Anuncios

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 tipos
  • SORT_NUMERIC, compara los elementos de forma numerica
  • SORT_STRING, compara los elementos alfabeticamente
  • SORT_LOCALE_STRING, compara los elementos alfabeticamente pero en base a la configuracion locaal del equipo
  • SORT_NATURAL, compara los elementos alfabeticamente de orden «natural»
  • SORT_FLAG_CASE, se usa para ordenar sin considerar las mayusculas y minusculas
Anuncios

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);

?>
Anuncios

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
)
$
Anuncios

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);
Anuncios

De la siguiente manera:

array_multisort($a, SORT_DESC, SORT_NUMERIC, $b);
Anuncios

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
)
$
Anuncios

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);

?>
Anuncios

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
        )

)
$
Anuncios

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.

Anuncios

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.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50