Tuesday, May 18, 2010

Ordenar un array en PHP de acuerdo a un valor de los elementos que queremos ordenar (usort + funciones anonimas)

Retorcido ? bueno, mejor el ejemplo del codigo:

<?php

$array = array(0 => array('id' => 1, 'secs_order' => 82800), 1 => array('id' => 2, 'secs_order' => 64800), 2 => array('id' => 3, 'secs_order' => 19300));

$cmp = function ($a, $b) {

if ($a['secs_order'] == $b['secs_order']) return 0;

return ($a['secs_order'] < $b['secs_order']) ? -1 : 1;

};

echo '<pre>' . print_r($array, TRUE) . '</pre>'; // desordenado

usort($array, $cmp); // notese q aca $cmp es una funcion anonima ...

echo '<pre>' . print_r($array, TRUE) . '</pre>'; // ordenado

?>

Interesante para ordenar arrays de forma "no convencional" con una funcion propia. En este caso se ordeno el $array de menor a mayor de acuerdo al subvalor 'secs_order' de cada elemento del $array.


Saludos !

No comments:

Followers

About me

Santa Fe, Argentina
Programador Web, PHP, MySQL, JQuery, Administrador Linux. LAMP, Lighttpd, Nginx.