Advertisement
Guest User

Untitled

a guest
Apr 19th, 2014
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.89 KB | None | 0 0
  1. $numbers = array(1,3,2,4,5,6,7,8,9,11,10,15,14,13,12,16,17,18,19,20,22);
  2.  
  3. function get_number_ranges($numbers)
  4. {
  5. $last = null;
  6. foreach ($numbers as $number) {
  7. if (is_null($last)) {
  8. $string = $number;
  9. $last = $number;
  10. } elseif ($last + 1 != $number) {
  11. $string .= '-' . $last . ', ' . $number;
  12. $last = $number;
  13. } else {
  14. $last = $number;
  15. }
  16. }
  17.  
  18. if ($last == $number) {
  19. $string .= '-' . $number;
  20. }
  21.  
  22. return $string;
  23. }
  24.  
  25. 1-1, 3-3, 2-2, 4-9, 11-11, 10-10, 15-15, 14-14, 13-13, 12-12, 16-20, 22-22
  26.  
  27. 1, 3, 2, 4-9, 11, 10, 15, 14, 13, 12, 16-20, 22
  28.  
  29. function get_number_ranges($numbers)
  30. {
  31. $last = null;
  32. foreach ($numbers as $number) {
  33. if (is_null($last)) {
  34. $string = $number;
  35. $last = $number;
  36. $first = $number ; //Remember first
  37. } elseif ($last + 1 != $number) {
  38. if ($first != $last ) //Only append if different
  39. $string .= '-' . $last ;
  40. $string .= ', ' . $number;
  41. $last = $number;
  42. $first = $number ; //Remember first
  43. } else {
  44. $last = $number;
  45. }
  46. }
  47.  
  48. if ($last == $number && $last != $first) { //Only if different
  49. $string .= '-' . $number;
  50. }
  51.  
  52. return $string;
  53. }
  54.  
  55. $numbers = array(1,3,2,4,5,6,7,8,9,11,10,15,14,13,12,16,17,18,19,20,22);
  56.  
  57. function get_number_ranges($numbers)
  58. {
  59. $last = null;
  60. $firstFromRange = null;
  61. foreach ($numbers as $number) {
  62. if (is_null($last)) {
  63. $string = $number;
  64. $firstFromRange = $number; // new range begins, save the number
  65. } elseif ($last + 1 != $number) {
  66. if ($firstFromRange == $last) { // if the range is only one number, don't add '-' . $last
  67. $string .= ', ' . $number;
  68. } else {
  69. $string .= '-' . $last . ', ' . $number;
  70. }
  71. $firstFromRange = $number; // new range begins, save the number
  72. }
  73.  
  74. $last = $number;
  75. }
  76.  
  77. if ($last == $number && $last != $firstFromRange) {
  78. $string .= '-' . $number;
  79. }
  80.  
  81. return $string;
  82. }
  83.  
  84. <?php
  85. $numbers = array(1,3,2,4,5,6,7,8,9,11,10,15,14,13,12,16,17,18,19,20,22);
  86.  
  87. function get_number_ranges($numbers){
  88. $result = '';
  89. if( is_array($numbers) ){
  90. $start = $end = array_shift($numbers);
  91. for($i=0,$c=count($numbers);$i<$c;$i++){
  92. if($end == $numbers[$i]-1){
  93. $end = $numbers[$i];
  94. }else{
  95. $result .= ($start == $end) ? $start: $start.'-'.$end;
  96. $result .= ',';
  97. $start = $end = $numbers[$i];
  98. }
  99. }
  100. $result .= ($start == $end) ? $start: $start.'-'.$end;
  101. }
  102.  
  103. return $result;
  104. }
  105.  
  106. echo get_number_ranges($numbers );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement