因为手上做的一个网站设计到数组分页、从网上找了个对数组分页的帖子、能不能麻烦学长们帮我分析下这个数组分页每行代码的作用啊、我自己也标记了一部门、但整个看起来看是很模糊
<?php
//申明数组
$array=array("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20");
//获取当前页
$page=$_GET["page"];
//调用函数page并向page传值,将结果赋值给$r
$r=page($array,"3",$page);     
 //循环数组内容、每循环一次复制给$value ,不过这个source是什么?
foreach($r["source"] as $value){  
//想屏幕输出循环结果
echo $value;
}
echo "<br />";
//输出函数结果$r
echo $r["page"];
//定义函数page
function page($array,$pagesize,$current){
//定义$_return为一个数组
$_return=array();
/*calculator*/
//总页数等于$array数组中的记录数除以每页显示的记录,并取整
$total=ceil(Count($array)/$pagesize);
//上一页等于当前页数减1、如果当前页减1小于等于0为真,则当前页等于1,
$prev=(($current-1)<=0 ? "1":($current-1));
//下一页等于当前页加1、如果当前页等于大于总页数、当前页等于总页数
$next=(($current+1)>=$total ?   $total:$current+1);
//当前页如果大于总页数、等于总页数、否则为当前页
$current=($current>($total)?($total):$current);
//这个地方不理解
$start=($current-1)*$pagesize;
//这个for循环也不理解,后面的能不能学长能不能帮我写下呢?
for($i=$start;$i<($start+$pagesize);$i++){
array_push($_return,$array[$i]);
}
$pagearray["source"]=$_return;
$pagearray["page"]="<a href=\"?page=1\">first</a> <a href=\"?page={$prev}\">prev</a> <a href=\"?page={$next}\">next</a> <a href=\"?page={$total}\">end</a>";
return $pagearray;
}
?>
 

解决方案 »

  1.   


    <?php
    //申明数组
    $array=array("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20");
    //获取当前页
    $page=$_GET["page"];
    //调用函数page并向page传值,将结果赋值给$r
    $r=page($array,"3",$page);     
     //循环数组内容、每循环一次复制给$value ,不过这个source是什么?
    //$r["source"]为下面的数字数组。你打印一下就知道了。
    foreach($r["source"] as $value){  
    //想屏幕输出循环结果
    echo $value;
    }
    echo "<br />";
    //输出函数结果$r
    echo $r["page"];
    //定义函数page
    function page($array,$pagesize,$current){
    //定义$_return为一个数组
    $_return=array();
    /*calculator*/
    //总页数等于$array数组中的记录数除以每页显示的记录,并取整
    $total=ceil(Count($array)/$pagesize);
    //上一页等于当前页数减1、如果当前页减1小于等于0为真,则当前页等于1,
    $prev=(($current-1)<=0 ? "1":($current-1));
    //下一页等于当前页加1、如果当前页等于大于总页数、当前页等于总页数
    $next=(($current+1)>=$total ?   $total:$current+1);
    //当前页如果大于总页数、等于总页数、否则为当前页
    $current=($current>($total)?($total):$current);
    //这里开始计算分页。这是分页的公式。(当前页-1)*每页显示数量
    $start=($current-1)*$pagesize;
    //这个for循环也不理解,后面的能不能学长能不能帮我写下呢?
    for($i=$start;$i<($start+$pagesize);$i++){
    array_push($_return,$array[$i]); //假设当前为第一页,每页显示10个,则$start=0;从0循环到9;即把$array[0],.....$array[9]赋值给$_return;
    }
    $pagearray["source"]=$_return;  //把$_return赋值给$pagearray这个数组以source为键名。
    //为数组$pagearray第二个元素赋值、以page为键名。值为分页信息。
    $pagearray["page"]="<a href=\"?page=1\">first</a> <a href=\"?page={$prev}\">prev</a> <a href=\"?page={$next}\">next</a> <a href=\"?page={$total}\">end</a>";
    return $pagearray;  //返回这个数组
    }
    ?>
     
      

  2.   


    $r=page($array,"3",$page);
    function page($array,$pagesize,$current)
    还想问下、他在定义函数page的时候、给了三个参数、$array,$pagesize,$current但是在调用这个函数的时候也给了三个参数$array,"3",$page那么这个时候函数中的$current = $page 么?
    如果是这样、能不能定义函数的时候直接 是
    function page(){
    }
    这种形式呢?