Revista Comunicación

Ordenando Arrays multidimensionales con PHP

Publicado el 18 octubre 2014 por Alexborras @alexborras

php-logoUn 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 >
  1. $data = array(
  2.     array("firstname" => "Mary", "lastname" => "Johnson", "age" => 25),
  3.     array("firstname" => "Amanda", "lastname" => "Miller", "age" => 18),
  4.     array("firstname" => "James", "lastname" => "Brown", "age" => 31),
  5.     array("firstname" => "Patricia", "lastname" => "Williams", "age" => 7),
  6.     array("firstname" => "Michael", "lastname" => "Davis", "age" => 43),
  7.     array("firstname" => "Sarah", "lastname" => "Miller", "age" => 24),
  8.     array("firstname" => "Patrick", "lastname" => "Miller", "age" => 27)
  9. );
  10. function orderBy($data, $field,$order = "ASC"){
  11.     $code = "return strnatcmp(\$a['$field'], \$b['$field']);";
  12.     if ($order == "ASC"){
  13.         usort($data, create_function('$a,$b', $code)); //ASC
  14.     }elseif ($order == "DESC"){
  15.         usort($data, create_function('$b,$a', $code)); //DESC
  16.     }else{
  17.     usort($data, create_function('$a,$b', $code)); //ASC
  18.     }
  19.     return $data;
  20. }
  21. /View results
  22. echo "<pre>";
  23. $sorted_data = orderBy($data, 'age');
  24. print_r($sorted_data);
  25. $sorted_data = orderBy($data, 'age',"DESC");
  26. print_r($sorted_data);

Volver a la Portada de Logo Paperblog