Ordenar array multidimensional por un campo con PHP
La siguiente función nos permite ordenar un array multidimensionar por un campo, además podemos indicarle si lo queremos ordenar de forma ascendente o descendente.
function orderMultiDimensionalArray ($toOrderArray, $field, $inverse) {
$position = array();
$newRow = array();
foreach ($toOrderArray as $key => $row) {
$position[$key] = $row[$field];
$newRow[$key] = $row;
}
if ($inverse) {
arsort($position);
}
else {
asort($position);
}
$returnArray = array();
foreach ($position as $key => $pos) {
$returnArray[] = $newRow[$key];
}
return $returnArray;
}
La función es muy sencilla, $toOrderArray es el array que vamos a ordenar, $field es el campo por el que queremos ordenar el array y $inverse es la forma en el que queremos ordenarlo, si le ponemos el valor false lo hará de forma ascendente y si le ponemos true de forma descendente.
Aquí os dejo otra función que ordena alfabéticamente un array multidimensional por el campo indicado:
function subval_sort($a,$subkey)
{
foreach($a as $k=>$v) {
$b[$k] = strtolower($v[$subkey]);
}
asort($b);
foreach($b as $key=>$val) {
$c[] = $a[$key];
}
return $c;
}