Sort Array by key
Ordenar un array por clave
El siguiente código en PHP proporciona una función array_sort
que ordena un array asociativo por una clave específica, manteniendo la asociación de índices. Aquí está el código:
<?php
function array_sort($array, $on, $order=SORT_ASC){ $new_array = array(); $sortable_array = array();
if (count($array) > 0) { foreach ($array as $k => $v) { if (is_array($v)) { foreach ($v as $k2 => $v2) { if ($k2 == $on) { $sortable_array[$k] = $v2; } } } else { $sortable_array[$k] = $v; } }
switch ($order) { case SORT_ASC: asort($sortable_array); break; case SORT_DESC: arsort($sortable_array); break; }
foreach ($sortable_array as $k => $v) { $new_array[$k] = $array[$k]; } }
return $new_array;}
$people = array( 12345 => array( 'id' => 12345, 'first_name' => 'Joe', 'surname' => 'Bloggs', 'age' => 23, 'sex' => 'm' ), 12346 => array( 'id' => 12346, 'first_name' => 'Adam', 'surname' => 'Smith', 'age' => 18, 'sex' => 'm' ), 12347 => array( 'id' => 12347, 'first_name' => 'Amy', 'surname' => 'Jones', 'age' => 21, 'sex' => 'f' ));
print_r(array_sort($people, 'age', SORT_DESC)); // Ordena por edad de mayor a menorprint_r(array_sort($people, 'surname', SORT_ASC)); // Ordena por apellido de forma ascendente
?>