10
回答
php 数组遍历求大神给解
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
array(21,1,2,5,7,8,50,68,69,70,71,72)
遍历成
array(
   array(21,21),
   array(1,2),
   array(5,5),
   array(7,8),
   array(50,50),
   array(68,72)
) 
连续的数字和单独的独立出来
<无标签>
举报
cnscorpion
发帖于2年前 10回/159阅
共有10个答案 最后回答: 2年前

引用来自“开源政治”的评论

连续?50=>50? 68=>72?


有连续,有单独的

连续的就取头和尾,单独的头尾都一样

如 1,2,3,4 取成 1,4

   6 取成 6,6

--- 共有 5 条评论 ---
cnscorpion回复 @开源政治 : 我遍历一下午,脑袋大 2年前 回复
cnscorpion回复 @开源政治 : 大侠你遍历一下呗,看看能出来不 2年前 回复
开源小姐回复 @cnscorpion : 做两个变量,都存开头,比如1,然后第二个变量分别由连续的数来覆盖。比如1后面有123456,第二个变量从2存到6,到后面遇到不连续的数字就把这两个变量组成数组。 2年前 回复
cnscorpion回复 @开源政治 : 对,先排序以后呢?怎么判断后面一个数是不是最后一个?这点我卡壳了!或者单独的如何判断 2年前 回复
开源小姐先排序不就很简单了 2年前 回复

$arr = array(21,1,2,5,7,8,50,68,69,70,71,72); 一维数组

遍历,数字归类

二维数组

$new_array =array(
   array(21,21),
   array(1,2),
   array(5,5),
   array(7,8),
   array(50,50),
   array(68,72)
) ;

$arr = array(21,1,2,5,7,8,50,68,69,70,71,72);
$new_arr = array();
sort($arr);
$a = $b = array_shift($arr);
foreach($arr as $value){
    if($b+1 == $value){
        $b = $value;
    }else{
        $new_arr[] = array($a,$b);
        $a = $b = $value;
    }
}
$new_arr[] = array($a,$b);
var_dump($new_arr);

引用来自“开源政治”的评论

$arr = array(21,1,2,5,7,8,50,68,69,70,71,72);
$new_arr = array();
sort($arr);
$a = $b = array_shift($arr);
foreach($arr as $value){
    if($b+1 == $value){
        $b = $value;
    }else{
        $new_arr[] = array($a,$b);
        $a = $b = $value;
    }
}
$new_arr[] = array($a,$b);
var_dump($new_arr);
谢谢 
$arr1 = array(21,1,2,5,7,8,50,68,69,70,71,72); $num = count($arr1); $newArr = array(); for($key=0;$key<$num;$key++){ $v1 = $arr1[$key]; if($num-1 > $key){ $v2 = $arr1[($key+1)]; }else if(isset($arr1[$key]) && !isset($arr1[($key+1)])){ $newArr[] = array($v1,$v1); break; }else{ break; } if($v1 == ($v2-1)){ $newArr[] = array($v1,$v2); $key++; }else{ $newArr[] = array($v1,$v1); } } print_r($newArr); 结果: Array ( [0] => Array ( [0] => 21 [1] => 21 ) [1] => Array ( [0] => 1 [1] => 2 ) [2] => Array ( [0] => 5 [1] => 5 ) [3] => Array ( [0] => 7 [1] => 8 ) [4] => Array ( [0] => 50 [1] => 50 ) [5] => Array ( [0] => 68 [1] => 69 ) [6] => Array ( [0] => 70 [1] => 71 ) [7] => Array ( [0] => 72 [1] => 72 ) )
$arr1 = array(21,1,2,5,7,8,50,68,69,70,71,72); $num = count($arr1); $newArr = array(); for($key=0;$key<$num;$key++){ $v1 = $arr1[$key]; if($num-1 > $key){ $v2 = $arr1[($key+1)]; }else if(isset($arr1[$key]) && !isset($arr1[($key+1)])){ $newArr[] = array($v1,$v1); break; }else{ break; } if($v1 == ($v2-1)){ $newArr[] = array($v1,$v2); $key++; }else{ $newArr[] = array($v1,$v1); } } print_r($newArr);

引用来自“suhanyujie”的评论

$arr1 = array(21,1,2,5,7,8,50,68,69,70,71,72); $num = count($arr1); $newArr = array(); for($key=0;$key<$num;$key++){ $v1 = $arr1[$key]; if($num-1 > $key){ $v2 = $arr1[($key+1)]; }else if(isset($arr1[$key]) && !isset($arr1[($key+1)])){ $newArr[] = array($v1,$v1); break; }else{ break; } if($v1 == ($v2-1)){ $newArr[] = array($v1,$v2); $key++; }else{ $newArr[] = array($v1,$v1); } } print_r($newArr);
感谢
顶部