Guest User

Untitled

a guest
May 23rd, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. <?php
  2.  
  3. function array_msort($array, $cols)
  4. {
  5. // clean cols
  6. $cols = (array) $cols;
  7. foreach ($cols as $col => $order) {
  8. if (is_int($col)) {
  9. // unassociative array.
  10. $cols[$order] = SORT_ASC;
  11. unset($cols[$col]);
  12. }
  13. }
  14.  
  15. $colarr = array();
  16. foreach ($cols as $col => $order) {
  17. $colarr[$col] = array();
  18. foreach ($array as $k => $row) { $colarr[$col]['_'.$k] = strtolower($row[$col]); }
  19. }
  20. $params = array();
  21. foreach ($cols as $col => $order) {
  22. $params[] =& $colarr[$col];
  23. foreach ((array) $order as $i=> $orderArg)
  24. {
  25. $uniqueFlag = $col.'_'.$i.'_flag';
  26. $$uniqueFlag = $orderArg;
  27. $params[] = &$$uniqueFlag;
  28. }
  29. }
  30.  
  31. call_user_func_array('array_multisort', $params);
  32. $sorted = array();
  33. $keys = array();
  34. $first = true;
  35. foreach ($colarr as $col => $arr) {
  36. foreach ($arr as $k => $v) {
  37. if ($first) { $keys[$k] = substr($k,1); }
  38. $k = $keys[$k];
  39. if (!isset($sorted[$k])) $sorted[$k] = $array[$k];
  40. $sorted[$k][$col] = $array[$k][$col];
  41. }
  42. $first = false;
  43. }
  44. $array = $sorted;
  45. return $array;
  46. }
Add Comment
Please, Sign In to add comment