题目:一个数组有0和1,各值数目不定,其中单页0连续数最多排4个,单页1连续数最多排3个,0和1处在同一页则自适应为6个。
<?php
/*
* 0连续最多排4个
* 1连续最多排3个
* 0和1自适应共6个
* */
$arr = array(0,0,0,0, //0
1,1,0,0,0,0, //1
0,0,1,1,1,1, //2
1,0,0,1,1,0, //3
0,0,0,0, //4
1,1,1, //5
0,0,1,1,0,1, //6
1,1,1, //7
1,0 //8
);
$x = $y = $page = $x1 = $y1 = 0;
$arr1 = array();
foreach($arr as $k => $v){
$arr1[] = $page.'_'.$v.'_'.$k;
if ($v == 1){
$x++;
if ($y == 0){ //1排第1个
if (!$x1 && $x == 3) {//1排了3个
$page++;
$x = 0;
}
if ($x1){
if ($k >= $x1) { //0此时自适应排满
$x1 = $x = 0;
$page++;
}
}
} else{ //0排第x+1个
if($x1){
$page++;
$y = $y1 = $x = $x1 = 0;
}elseif (!$x1){
$x1 = $k + 6 - $y - 1;
$y = 0;
}
}
}elseif($v == 0){
$y++;
if ($x == 0){ //0排第1个
if (!$y1 && $y == 4) {//0排了4个
$page++;
$y = 0;
}
if ($y1){
if ($k >= $y1){ //0此时自适应排满
$y1 = $y = 0;
$page++;
}
}
} else{ //0排第x+1个
if ($y1) {
$x = $x1 = $y = $y1 = 0;
$page++;
}elseif (!$y1) {
$y1 = $k + 6 - $x - 1;
$x = 0;
}
}
}
}
var_dump($arr1);
?>
这个分页主要卡在细节部分,这部分花了半天了。。。。
现在记录下来~~