Un ejemplo casi definitivo de como ordenar Arrays multidimensionales en PHP por cualquier campo y tipo de orden. Esta recogido de la siguiente página de Internet: PHP: Sorting Arrays of Arrays después de analizar distintas soluciones, mi pequeña aportación ha conssitido en el parámetro $order.
$data = array( array("firstname" => "Mary", "lastname" => "Johnson", "age" => 25), array("firstname" => "Amanda", "lastname" => "Miller", "age" => 18), array("firstname" => "James", "lastname" => "Brown", "age" => 31), array("firstname" => "Patricia", "lastname" => "Williams", "age" => 7), array("firstname" => "Michael", "lastname" => "Davis", "age" => 43), array("firstname" => "Sarah", "lastname" => "Miller", "age" => 24), array("firstname" => "Patrick", "lastname" => "Miller", "age" => 27) ); function orderBy($data, $field,$order = "ASC"){ $code = "return strnatcmp(\$a['$field'], \$b['$field']);"; if ($order == "ASC"){ usort($data, create_function('$a,$b', $code)); //ASC }elseif ($order == "DESC"){ usort($data, create_function('$b,$a', $code)); //DESC }else{ usort($data, create_function('$a,$b', $code)); //ASC } return $data; } /View results echo " <pre>"; $sorted_data = orderBy($data, 'age'); print_r($sorted_data); $sorted_data = orderBy($data, 'age',"DESC"); print_r($sorted_data);