Maison > Questions et réponses > le corps du texte
$arr = [2,3,4,5,8,10,11,12,13,16,19] ;
Convertir en chaîne
2-5, 8, 10-13, 16, 19
Mon idée personnelle est de sélectionner 8 16 19 qui ne dépendent pas des deux côtés, puis de sélectionner une valeur maximale et minimale parmi 2 3 4 5.
怪我咯2017-05-16 13:15:33
Notez la valeur du point de départ et numérisez en arrière. Si elle est continue, continuez en arrière. Sinon, notez la valeur du point final et obtenez un début ou une fin. continuez...
淡淡烟草味2017-05-16 13:15:33
$arr=array(2,3,4,5,8,10,11,12,13,16,19);
//最大值
$max=max($arr);
//求和
$sun=array_sum($arr);
//排序
asort($arr);
//a1为标准数组,用来判断值是否存在
//a2用来存放已经被使用过的数
//a3为最后的结果数组
foreach ($arr as $key => $value) {
$a1[$value]=$value;
}
foreach ($arr as $key => $value) {
if(!isset($a2[$value])){
$start=$value;
$end=$value;
$a2[$value]=$value;
for($i=0;$i<$sun;$i++){
$end = $end+1;
if(isset($a1["$end"])){
$a2[$end]=$end;
}else{
$end =$end-1;
if($start==$end){
$a3 []= $start;
}else{
$a3 []= $start."-".$end;
}
//断开了,跳出循环
break;
}
}
}
}
echo '<pre>';
var_dump($a3);
die;