求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 矩阵求逆 离散对数 大步小步算法

2017.12.27 算法分析 贪心算法删除数字求最小值问题

求一个简单的python数字加密解密算法