Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $numbers = array(1,3,2,4,5,6,7,8,9,11,10,15,14,13,12,16,17,18,19,20,22);
- function get_number_ranges($numbers)
- {
- $last = null;
- foreach ($numbers as $number) {
- if (is_null($last)) {
- $string = $number;
- $last = $number;
- } elseif ($last + 1 != $number) {
- $string .= '-' . $last . ', ' . $number;
- $last = $number;
- } else {
- $last = $number;
- }
- }
- if ($last == $number) {
- $string .= '-' . $number;
- }
- return $string;
- }
- 1-1, 3-3, 2-2, 4-9, 11-11, 10-10, 15-15, 14-14, 13-13, 12-12, 16-20, 22-22
- 1, 3, 2, 4-9, 11, 10, 15, 14, 13, 12, 16-20, 22
- function get_number_ranges($numbers)
- {
- $last = null;
- foreach ($numbers as $number) {
- if (is_null($last)) {
- $string = $number;
- $last = $number;
- $first = $number ; //Remember first
- } elseif ($last + 1 != $number) {
- if ($first != $last ) //Only append if different
- $string .= '-' . $last ;
- $string .= ', ' . $number;
- $last = $number;
- $first = $number ; //Remember first
- } else {
- $last = $number;
- }
- }
- if ($last == $number && $last != $first) { //Only if different
- $string .= '-' . $number;
- }
- return $string;
- }
- $numbers = array(1,3,2,4,5,6,7,8,9,11,10,15,14,13,12,16,17,18,19,20,22);
- function get_number_ranges($numbers)
- {
- $last = null;
- $firstFromRange = null;
- foreach ($numbers as $number) {
- if (is_null($last)) {
- $string = $number;
- $firstFromRange = $number; // new range begins, save the number
- } elseif ($last + 1 != $number) {
- if ($firstFromRange == $last) { // if the range is only one number, don't add '-' . $last
- $string .= ', ' . $number;
- } else {
- $string .= '-' . $last . ', ' . $number;
- }
- $firstFromRange = $number; // new range begins, save the number
- }
- $last = $number;
- }
- if ($last == $number && $last != $firstFromRange) {
- $string .= '-' . $number;
- }
- return $string;
- }
- <?php
- $numbers = array(1,3,2,4,5,6,7,8,9,11,10,15,14,13,12,16,17,18,19,20,22);
- function get_number_ranges($numbers){
- $result = '';
- if( is_array($numbers) ){
- $start = $end = array_shift($numbers);
- for($i=0,$c=count($numbers);$i<$c;$i++){
- if($end == $numbers[$i]-1){
- $end = $numbers[$i];
- }else{
- $result .= ($start == $end) ? $start: $start.'-'.$end;
- $result .= ',';
- $start = $end = $numbers[$i];
- }
- }
- $result .= ($start == $end) ? $start: $start.'-'.$end;
- }
- return $result;
- }
- echo get_number_ranges($numbers );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement