我的做法: 我的解法: <?php function getNumber($str){ $arr = explode(',', $str); //分割字符串组成数组 $arr2 = array(); foreach($arr as $value){ if(is_numeric($value)){ //判断是否是单个数字 $arr2[] = $value; }else{ $arr3 = explode('-', $value); //获取横杆两边区间 $arr2 = array_merge($arr2, range($arr3[0], $arr3[1])); //合并数组 } } asort($arr2); //升序排列数组 return implode($arr2, ','); //组合成字符串返回 } $str = '1-3,23,5-7,8-8'; echo getNumber($str);
李照耀大师解法: <?php function getNumber($str){ $result = array(); //初始化数组 $str_array = explode(',', $str); //按逗号分隔 foreach($str_array as $v){ $range_array = explode('-', $v); //按横杆分隔 if (count($range_array) == 1) { $range_array[1] = $range_array[0]; //处理单个数字1,或者1-1 } $result = array_merge($result, range($range_array[0], $range_array[1])); } asort($result); return implode(',', $result); } $str = '1-3,23,5-7,8-8'; echo getNumber($str); ?>
两个方法都是同一个结果:
来自ansion
2017年5月16日