Ordenando Arrays multidimensionales con PHP
Publicado el 18 octubre 2014 por Alexborras
@alexborras
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.
code
< view plain text > - $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);