/* * 获取连续数字拼接 * $arr = array( 'dev' => array(1, 2, 3, 4, 10, 20, 21, 22), 'dev2' => array(1, 2, 3, 50), 'dev3' => array(1) ); *结果: [dev] => devs1-2 [dev2] => dev2s1 */ public function getContinuouStr($arr){ $ret = array(); foreach ($arr as $agent => $server_arr) { $count = count($server_arr); //个数 $start = $server_arr[0]; //连续段的起始值 $pre = $start; //上一个数 $_ret = array(); $_ret = array($start => 0); for($i = 1; $i < $count; $i ++) { $cur = $server_arr[$i]; if($cur - $pre == 1) { //是连续 $_ret[$start] = $cur; } else { //不连续 $start = $cur; $_ret[$start] = 0; } $pre = $cur; } $ret[$agent] = $_ret; } $ret2 = array(); foreach ($ret as $agent => $server_arr) { $str = ''; foreach ($server_arr as $k => $val) { if($val > 0) { $str .= $agent . 's' . $k . '-' . $val . '&'; } else { $str .= $agent . 's' . $k . '&'; } } $str = rtrim($str, '&'); $ret2[$agent] = $str; } return $ret2; }