![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
16/11/2020, 12:40
|
| | Fecha de Ingreso: junio-2007
Mensajes: 298
Antigüedad: 17 años, 8 meses Puntos: 5 | |
Ordenar un array asociativo por un campo concreto Hola a todos, tengo el siguiente código:
function orderByCampo($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);
}
$arrPrueba = array();
$arrPrueba[0]["id"] = 1;
$arrPrueba[0]["prioridad"] = 1.6;
$arrPrueba[0]["texto"] = "uno";
$arrPrueba[1]["id"] = 2;
$arrPrueba[1]["prioridad"] = 1.0;
$arrPrueba[1]["texto"] = "dos";
$arrPrueba[2]["id"] = 3;
$arrPrueba[2]["prioridad"] = 0.4;
$arrPrueba[2]["texto"] = "tres";
$arrPrueba[3]["id"] = 4;
$arrPrueba[3]["prioridad"] = -0.8;
$arrPrueba[3]["texto"] = "cuatro";
$arrPrueba[4]["id"] = 5;
$arrPrueba[4]["prioridad"] = -0.6;
$arrPrueba[4]["texto"] = "cinco";
orderByCampo($arrPrueba, "prioridad", "asc");
foreach ($arrPrueba as $clave=>$valor) {
echo $valor["id"]."<br>";
echo $valor["prioridad"]."<br>";
echo $valor["texto"];
echo "<hr>";
}
Pero no me funciona, no me ordena el array por el campo prioridad (lo deja como está originalmente). ¿en qué puede estar fallando este código? llevo ya una hora con ello y no localizó en qué puede fallar.
Espero vuestra respuesta.
Muchas gracias por adelantado. |