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; }