求php数字分页算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求php数字分页算法相关的知识,希望对你有一定的参考价值。
123456 这种 比如我点6 数字码会增加 比如变成 456789 在点4 又变回123456这种 不通过上一页 下一页点击变数字 求算法 不要整篇代码 只要这部分的算法 要有注释 先悬赏50分 实现了再追加 谢谢帮助 做任务的来发垃圾的贴的倒霉三年
假设。你只需要显示当前页数的前3页和后3页。
呐么只有3种可能。
第一个可能,用户当前点击的页数未超过前3页。需要显示前7页(前三页和后三页以及当前点击的页)省略7页后面的页。
第二个可能,用户点击的页数以超过前三页可是未到尾三页。那么就要省略当前页数的前三页后三页之外的所有页码。
第三个可能,用户点击的页数以超过尾三页。那么就省略最后7页外的所有页码。
这是我写的分页码中算省略页码的代码。
$fornum = 10; //先声明你要显示的是几个页。
if($totalpage > $fornum) //判断当前的所有页数是否超过你要显示的页。如果没超过。那就不用费事直接显示所有页码就行叻。 如果超过进入循环。
//第一种可能。我这个是只显示10个页码。
if($page<=6) //如果当前的页码大于等于6.也就是前面的页码不用省略。直接省略10个页码之后的页就OK叻。
for($i=1; $i <= $fornum; $i++)//这就是循环显示数字页码
if($page == $i )
echo '<a href="javascript:;" class="on">'.$i.'</a>';
else
echo '<a href="'.$_SERVER['php_SELF'].'?page='.$i.'" class="num">'.$i.'</a>';
echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$totalpage.'" class="num">...'.$totalpage.'</a>';
//注意阿。这不是第二个可能。这是第三个可能。因为第一个和第三个好判断。而两个都不满足呐就是第二个可能叻。所以第二个不用判断。这个条件也很好解释。总的页数减去当前页数小于等于5的话。那么就省略最后10页以外的页码。
elseif(($totalpage-$page) <= 5)
echo '<a href="'.$_SERVER['PHP_SELF'].'?page=1" class="num">1...</a>';
for($i=$totalpage - ($fornum -1); $i <= $totalpage; $i++)//依旧是循环显示数字页码
if($page == $i )
echo '<a href="javascript:;" class="on">'.$i.'</a>';
else
echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'" class="num">'.$i.'</a>';
//这就是第二个可能叻。第一和第三的条件都不满足那么只有前没到头后没着尾的情况叻。所以不用判断直接显示当前页数的前几页和后几页。头尾都省略。
else
echo '<a href="'.$_SERVER['PHP_SELF'].'?page=1" class="num">1...</a>';
for($i=$page - 4; $i < $page + 5; $i++)//循环显示数字页码
if($page == $i )
echo '<a href="javascript:;" class="on">'.$i.'</a>';
else
echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'" class="num">'.$i.'</a>';
echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$totalpage.'" class="num">...'.$totalpage.'</a>';
//这是最上面的那个if的,如果总页码没超过你要显示的页码就直接显示所有的页码~
else
for($i=1; $i <= $totalpage; $i++)//仍是循环显示数字页码
if($page == $i )
echo '<a href="javascript:;" class="on">'.$i.'</a>';
else
echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'" class="num">'.$i.'</a>';
然后就木有叻。首页尾页上页下页的代码我就不粘叻。 关于显示固定页码的代码就是这些。希望你能看懂。打的我手都酸了。。。
参考资料:我自己写的。。。
参考技术A <?php$page=intval($_GET['page'])==0?1:intval($_GET['page']);//当前页码
$num=5;//显示页码个数
$total=10;//总页数
$start=0;//开始页码
$end=0;//末尾页码
if($page>$total)
$page=$total;
$nums1=intval($num/2);//开始项当前的个数
$nums2=$num%2==0?$nums1-1:$nums1;//末尾项当前的个数 判断是偶数还是奇数,是偶数就减1
if($page<=$num-$nums2) //当前页数小于或等于显示页码减去末尾项,当前位置还处于页码范围
$start=1;
$end=$num;
else
$start=$page-$nums1;
$end=$page+$nums2;
/*当计算出来的末尾项大于总页数*/
if($end>$total)
$start=($total-$num)+1;//开始项等于总页数减去要显示的数量然后再自身加1
$end=$total;
for($i=$start;$i<=$end;$i++)
if($page==$i)
echo "<a href='?page=$i'><font color=red>".$i."</font></a> ";
else
echo "<a href='?page=$i'>".$i."</a> ";
?>本回答被提问者采纳
算法基础_递归_求杨辉三角第m行第n个数字
问题描述:
算法基础_递归_求杨辉三角第m行第n个数字(m,n都从0开始)
解题源代码(这里打印出的是杨辉三角某一层的所有数字,没用大数,所以有上限,这里只写基本逻辑,要符合题意的话,把循环去掉就好):
import java.util.Scanner; /** * 求杨辉三角第m层第n个数字 * @author Administrator * */ public class Demo05 { public static int f(int m,int n) { if(n==0)return 1; if(m==0 || m==n)return 1; return f(m-1,n-1)+f(m-1,n);//只需要写上规律语句即可 } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int m = sc.nextInt(); for(int i = 0;i<m+1;i++) { System.out.print(f(m,i)+" "); } //System.out.println(f(3,2)); } }
解题思路:
因为杨辉三角的规律就是 要求的那个数字 = 上一行这个位置的数字 + 其前一个数字
这样表达式就出来了,直接return就行
希望对大家有所帮助
以上
以上是关于求php数字分页算法的主要内容,如果未能解决你的问题,请参考以下文章
程序实现0到9十个数字中选四个不相同的数字随机排列的算法问题,求指教修改
题解Matrix BZOJ 4128 矩阵求逆 离散对数 大步小步算法