$data = array(1,2,3,6,7,8,9,10,12,14,16,17,18,19,20,23,28,29,30,35,36);要取出的正确结果1 2 36 7 8 9 10121416 17 18 19 20 2328,29,3035,36两个连续的如35,36 可以分开单独显示1 2 36 7 8 9 10121416 17 18 19 20 2328,29,303536这样也可以
调试欢乐多
$data = array(1,2,3,6,7,8,9,10,12,14,16,17,18,19,20,23,28,29,30,35,36);
//print_r($data);
$j=-1;$y=0;
foreach($data as $key=>$value){
$j++;$i=$data[$key-1];
if($i==($value-1)){
if($j==($j-1))$y++;
$str[$y][]=$value;
}else{
$y++;
$str[$y][]=$value;
}
}
print_r($str);
$data = array(1,2,3,6,7,8,9,10,12,14,16,17,18,19,20,23,28,29,30,35,36);
//print_r($data);
$j=-1;$y=0;
foreach($data as $key=>$value){
$j++;$i=$data[$key-1];
if($i==($value-1)){
$str[$y][]=$value;
}else{
$y++;
$str[$y][]=$value;
}
}
print_r($str);
$i = 0;
$tmp;
foreach ($array as $k=>$v)
{
if($v == $array[$k-1]+1 || $v == $array[$k+1]-1)
{
$tmp = (int)$v;
if (isset($data[$i]) && @end($data[$i])+1 == $tmp)
{
$data[$i][] = $tmp;
$data[$i][] = $tmp;
} else {
$data[++$i][] = $tmp;
}
} else {
$data[++$i][] = $v;
}
}
return $data;
}
for($i=0;$i<count($data);$i++){
if($data[($i+1)]-$data[$i] ==1){
echo $data[$i].' ';
}else{
echo $data[$i].'<br>';
}
}
if($value - $data[($key-1)] == 1){
echo ' '.$value.' ';
}else{
echo '<br>'.$value;
}
}
if($data[($key+1)]- $value == 1 && $data[($key+2)]- $value == 2){ //判断第一个值与后面两个值是否连续
echo ' '.$value.' ';
}elseif($value - $data[($key-1)] == 1 && $data[($key+1)]- $value == 1){ //判断值与前面和后面两个值是否连续
echo ' '.$value.' ';
}elseif($value - $data[($key-1)] == 1 && $value - $data[($key-2)] == 2){//判断第值与前面两个值是否连续
echo ' '.$value.'<br>';
}else{
echo ''.$value.'<br>';
}
}
$data = array(1,2,3,6,7,8,9,10,12,14,16,17,18,19,20,23,28,29,30,35,36);
$i = 0;
$j = 0;
$result = array();
$length = count($data)-1;
foreach ($data as $key=>$value){
if($key<$length){
if(($data[$i]+1) == $data[$i+1]){
$result[$j][] = $data[$i];
}else{
$result[$j][] = $data[$i];
$j++;
}
$i++;
}else{
if(($data[$i]-1)== $data[$i-1]){
$result[$j][] = $data[$i];
}else{
$result[$j+1][] = $data[$i];
}
}
}
print_r($result);
$data = array(1,2,3,6,7,8,9,10,12,14,16,17,18,19,20,23,28,29,30,35,36);
$j = 0;
$array[$j][] = $data[0];
for($i = 1; $i<count($data); $i++){
if(($data[$i]-$data[$i-1]==1)){
$array[$j][] = $data[$i];
}else{
$j++;
$array[$j][] = $data[$i];
}
}
print_r($array);?>
rst:array(2) {
[0]=>
array(2) {
[0]=>
string(3) "111"
[1]=>
string(3) "888"
}
[1]=>
array(2) {
[0]=>
string(1) "1"
[1]=>
string(1) "8"
}
}
------
PHP 判断是否是连续的数字<?php $arr=array(1,2,3); function is_continuous_num($arr){ if(count($arr)==0) return false; for($i=0;$i<count($arr)-1;$i++){ if(is_numeric($arr[$i])){ if($arr[$i+1]-$arr[$i]!==1) return false; } else return false; } return true; } echo is_continuous_num($arr); ?>