function orderByLSG($items, $attr, $order) {
$sortedItems = [];
foreach ($items as $item) {
$key = is_object($item) ? $item->{$attr} : $item[$attr];
$sortedItems[$key] = $item;
}
if ($order === 'desc') {
krsort($sortedItems);
} else {
ksort($sortedItems);
}
return array_values($sortedItems);
}
$arr = array();
$arrAux = ["id"=>1, "nombre"=>"James Stewart", "pelicula" =>"Historias de Philadelphia"];
$arr[] = $arrAux;
$arrAux = ["id"=>2, "nombre"=>"Gary Cooper", "pelicula" =>"El sargento York"];
$arr[] = $arrAux;
$arrAux = ["id"=>3, "nombre"=>"James Cagney", "pelicula" =>"Yanqui Dandy"];
$arr[] = $arrAux;
$arrAux = ["id"=>4, "nombre"=>"Paul Lukas", "pelicula" =>"Alarma en el Rhin"];
$arr[] = $arrAux;
print_r(orderByLSG($arr, "nombre", "asc"));
print_r(orderByLSG($arr, "pelicula", "asc"));
El método anterior funciona siempre que el índice no sea negativo, para esos casos es mejor ordenar así:
function compararCampo($a, $b) {
if ($a["campoAComparar"] == $b["campoAComparar"]) {
return 0;
}
return ($a["campoAComparar"] < $b["campoAComparar"]) ? -1 : 1
}
...
uasort($arrAux, 'compararCampo');

No hay comentarios:
Publicar un comentario