PHP中的分页和无限循环

PHP中的分页和无限循环,php,arrays,pagination,Php,Arrays,Pagination,我试着把一个函数转换成一个php函数,然后运行它。我运行它时,它似乎陷入了一个无限循环。以下是脚本: <?php function pagination($str,$max_pg){ $pg = (int)$str; $max_pg = (int)$max_pg; if($max_pg <= 1){ exit(); } $pstrout = '<table cellpadding="0" cellspacing="0"

我试着把一个函数转换成一个php函数,然后运行它。我运行它时,它似乎陷入了一个无限循环。以下是脚本:

<?php
function pagination($str,$max_pg){
    $pg = (int)$str;
    $max_pg = (int)$max_pg;
    if($max_pg <= 1){
        exit();
    }

    $pstrout = '<table cellpadding="0" cellspacing="0" border="0">\r';
    $pstrout .= '<tr class="f5">\r';
    $pstrout .= '<td align="center" class="npagecounter" style="height:20px;color:#0000FF">\r'; 

    if ($pg >= 2){
        $pstrout .= '<a href="pg=1" id="Page1Link">&laquo;&nbsp;First</a>&nbsp;\r';
    }

    if (pg >=2){
        $pstrout .= '<a href="pg='.($pg-1).'" id="Page'.($pg-    1).'Link">&laquo;&nbsp;Previous</a>&nbsp;\r';
    }

    if (max_pg > 5){
        $npage_t = $pg + 4;
        $npage_count_diff = $max_pg - $pg;
        if ($npage_count_diff == 0){
            $npage_count_diff2 = 4;
        }elseif ($npage_count_diff == 1){
            $npage_count_diff2 = 3;
        }elseif ($npage_count_diff == 2){
            $npage_count_diff2 = 2;
        }else{
            $npage_count_diff2 = 1;
        }
        if ($npage_t > $max_pg){
            if ($npage_count_diff <= 3){
                for ($ipages=$pg-$npage_count_diff2;$ipages=$max_pg;$ipages++){
                    if($ipages == $pg){
                        $pstrout .= '<span style="padding:2px 6px" class="fb">'.$ipages.'</span>';
                    }else{
                        $pstrout .= '<a href="?pg='.$ipages.'" id="Page'.$ipages.'Link">'.$ipages.'</a>&nbsp;';
                    }
                }
            }else{
                for ($ipages=$pg;$ipages=$max_pg;$ipages++){
                    if ($ipages == $pg){
                        $pstrout .= '<span style="padding:2px 6px" class="fb">'.$ipages.'</span>';
                    }else{
                        $pstrout .= '<a href="?pg='.$ipages.'" id="Page'.$ipages.'Link">'.$ipages.'</a>&nbsp;';
                    }
                }
            }
        }else{
            if ($pg == 1){
                for ($ipages=$pg;$ipages=($pg+4);$ipages++){
                    if ($ipages == $pg){
                        $pstrout .= '<span style="padding:2px 6px" class="fb">'.$ipages.'</span>';
                    }else{
                        $pstrout .= '<a href="?pg='.$ipages.'" id="Page'.$ipages.'Link">'.$ipages.'</a>&nbsp;';
                    }
                }
            }elseif ($pg == 2){
                for ($ipages=($pg-1);$ipages=($pg+3);$ipages++){
                    if ($ipages == $pg){
                        $pstrout .= '<span style="padding:2px 6px" class="fb">'.$ipages.'</span>';
                    }else{
                        $pstrout .= '<a href="?pg='.$ipages.'" id="Page'.$ipages.'Link">'.$ipages.'</a>&nbsp;';
                    }
                }
            }else{
                for ($ipages=($pg-2);$ipages=($pg+2);$ipages++){
                    if ($ipages == $pg){
                        $pstrout .= '<span style="padding:2px 6px" class="fb">'.$ipages.'</span>';
                    }else{
                        $pstrout .= '<a href="?pg='.$ipages.'" id="Page'.$ipages.'Link">'.$ipages.'</a>&nbsp;';
                    }
                }
            }
        }
    }else{
        for ($ipages=1;$ipages=$max_pg;$ipages++){
            if ($ipages == $pg){
                $pstrout .= '<span style="padding:2px 6px" class="fb">'.$ipages.'</span>&nbsp;';
            }else{
                $pstrout .= '<a href="?pg='.$ipages.'" id="Page'.$ipages.'Link">'.$ipages.'</a>&nbsp;';
            }
        }
    }
    if ($max_pg > 1){
        if ($pg <> $max_pg){
            $pstrout .= '<a href="?pg='.($pg+1).'" id="Page'.($pg+1).'Link">Next&nbsp;&raquo;</a>&nbsp;';
        }
    }
    if ($max_pg > 1){
        if ($pg <> $max_pg){
            $pstrout .= '<a href="?pg='.$max_pg.'" id="Page'.$max_pg.'Link">Last&nbsp;&raquo;</a>';
        }
    }

    $pstrout .= '</td>\r';
    $pstrout .= '</tr>\r';
    $pstrout .= '<tr>\r';
    $pstrout .= '</table>\r'; 
    return $pstrout;
}

$current_page = 2;
$total_page = 24;
echo pagination($current_page,$total_page);
?>
我可能有一个支架不合适。请你帮我解决这个问题,无限循环


非常感谢

比较运算符使用错误,多次使用赋值操作

for ($ipages=$pg-$npage_count_diff2;$ipages=$max_pg;$ipages++)
$ipages=$max\u pg;应为$ipages==$max\u pg

可能会更好
$ipages您错误地使用了比较运算符,多次使用了赋值操作

for ($ipages=$pg-$npage_count_diff2;$ipages=$max_pg;$ipages++)
$ipages=$max\u pg;应为$ipages==$max\u pg

可能会更好 $ipages第二个循环

 }else{
                for ($ipages=$pg;HERE --> $ipages=$max_pg   <---HERE;$ipages++){
                    if ($ipages == $pg){
                        $pstrout .= '<span style="padding:2px 6px" class="fb">'.$ipages.'</span>';
                    }else{
                        $pstrout .= '<a href="?pg='.$ipages.'" id="Page'.$ipages.'Link">'.$ipages.'</a>&nbsp;';
                    }
                }
            }
第二圈

 }else{
                for ($ipages=$pg;HERE --> $ipages=$max_pg   <---HERE;$ipages++){
                    if ($ipages == $pg){
                        $pstrout .= '<span style="padding:2px 6px" class="fb">'.$ipages.'</span>';
                    }else{
                        $pstrout .= '<a href="?pg='.$ipages.'" id="Page'.$ipages.'Link">'.$ipages.'</a>&nbsp;';
                    }
                }
            }

你的for循环是错误的

更改此项:

for ($ipages=$pg;$ipages=$max_pg;$ipages++){
为此:

for ($ipages=$pg;$ipages<=$max_pg;$ipages++){
您需要对所有for循环执行此操作,并根据对问题的注释进行更改。代码中可能还有其他错误,但这是一个很好的起点

我对您的代码做了一些其他更改,并将其添加到PHP FIDLE中:逻辑似乎仍然无法正常工作,但该页面应该是一个良好的起点


同样,这样的问题更适合代码审查站点:

您的for循环是错误的

更改此项:

for ($ipages=$pg;$ipages=$max_pg;$ipages++){
为此:

for ($ipages=$pg;$ipages<=$max_pg;$ipages++){
您需要对所有for循环执行此操作,并根据对问题的注释进行更改。代码中可能还有其他错误,但这是一个很好的起点

我对您的代码做了一些其他更改,并将其添加到PHP FIDLE中:逻辑似乎仍然无法正常工作,但该页面应该是一个良好的起点


另外,类似这样的问题更适合代码审查站点:

我在代码中添加了一些echo以运行快速测试:

if ($pg == 1){
    for ($ipages=$pg;$ipages=($pg+4);$ipages++){
        echo "case 0 ".$ipages." ... ";
        [....]
    }
} else if ($pg == 2){
    for ($ipages=($pg-1);$ipages=($pg+3);$ipages++){
        echo "case 1 ".$ipages." ... ";
        [...]
    }
} else {
    for ($ipages=($pg-2);$ipages=($pg+2);$ipages++){
        echo "case 2 ".$ipages." ... ";
        [...]
    }
}
我得到了以下结果:

case 1 5 ... case 1 5 ... case 1 5 ... case 1 5 ... case 1 5 ... case 1 5 ... 

您应该像其他人提到的那样替换运算符

我在代码中添加了一些echo以运行快速测试:

if ($pg == 1){
    for ($ipages=$pg;$ipages=($pg+4);$ipages++){
        echo "case 0 ".$ipages." ... ";
        [....]
    }
} else if ($pg == 2){
    for ($ipages=($pg-1);$ipages=($pg+3);$ipages++){
        echo "case 1 ".$ipages." ... ";
        [...]
    }
} else {
    for ($ipages=($pg-2);$ipages=($pg+2);$ipages++){
        echo "case 2 ".$ipages." ... ";
        [...]
    }
}
我得到了以下结果:

case 1 5 ... case 1 5 ... case 1 5 ... case 1 5 ... case 1 5 ... case 1 5 ... 

你应该像其他人提到的那样更换你的操作员

当我完成时,你会给我寄支票吗?在最上面,如果max_pg>5应该是if$max_pg>5如果pg>=2{当我完成时,你会给我寄支票吗?在最上面,如果max_pg>5应该是if$max_pg>5如果pg>=2{