PHP根据条件分页

题目:一个数组有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);

?>

这个分页主要卡在细节部分,这部分花了半天了。。。。
现在记录下来~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值