Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP无限While循环,原因未知_Php_While Loop_Infinite - Fatal编程技术网

PHP无限While循环,原因未知

PHP无限While循环,原因未知,php,while-loop,infinite,Php,While Loop,Infinite,试图建立一个网页,输出一些搜索值整齐的页面底部,但我不断得到一个无限循环。我不知道是什么原因造成的,我想让其他人了解手头的问题。如果您的病情有问题 改变 <?php $i=1; while ($i<=$totalpages) { if (($i>=($page-5) && $i<=($page+5) && $i<$totalpages) || $i==1 || ($i+1>$totalpages)) {

试图建立一个网页,输出一些搜索值整齐的页面底部,但我不断得到一个无限循环。我不知道是什么原因造成的,我想让其他人了解手头的问题。

如果您的病情有问题

改变

<?php
$i=1;
while ($i<=$totalpages) {
    if (($i>=($page-5) && $i<=($page+5) && $i<$totalpages) || $i==1 || ($i+1>$totalpages)) {

        echo "<td><a href=\"search.php?page=$i\">";
        if ($i=$page) {
        echo "<strong>  $i  </strong>";
        }
        if ($i!=$page) {
        echo "  $i  ";
        }
        echo "</a></td>";
        }
    $i++;
    }

?>


如果你的情况有问题

改变

<?php
$i=1;
while ($i<=$totalpages) {
    if (($i>=($page-5) && $i<=($page+5) && $i<$totalpages) || $i==1 || ($i+1>$totalpages)) {

        echo "<td><a href=\"search.php?page=$i\">";
        if ($i=$page) {
        echo "<strong>  $i  </strong>";
        }
        if ($i!=$page) {
        echo "  $i  ";
        }
        echo "</a></td>";
        }
    $i++;
    }

?>


我假设,你有很多地方重置了$i

$i=1

$i=$page


将它们替换为
==

我假设您有许多地方重置了$i

$i==1
$i=1

$i=$page

将它们替换为
=


$i==1
第一个和第二个if条件发生变化。
1) $i==1
2) $i==$page


第一个和第二个if条件发生变化。
1) $i==1

2) $i==$page

是否有一个原因可以解释为什么不能使用for循环来实现这一点?而循环总是有风险的,如果有一个场景会导致永远的循环,那么它很容易导致问题

例如


for($i=0;$i使用for循环无法实现这一点有什么原因吗?而如果存在导致永远循环的场景,则循环总是有风险且容易导致问题

例如


对于($i=0;$i条件中存在一些问题

第一个问题是:

||$i=1||

一切都是真的。 换成

||$i==1||

第二:adobe也是如此

if($i=$page)//始终返回try是分配操作

改为:

如果($i==$page)


条件方面存在一些问题

第一个问题是:

||$i=1||

一切都是真的。 换成

||$i==1||

第二:adobe也是如此

if($i=$page)//始终返回try是分配操作

改为:

如果($i==$page)


$i=1
替换为
while
-loop中的
$i==1
。您的if语句相当复杂。我建议将其替换为类似以下内容:
if(CheckSomeCondition($i,$page,$totalPages)){…}
,然后执行
if
的实际逻辑-在该方法中以更可读的方式进行检查(这可能会使您自己更容易找到问题)。在
while
-loop中将
$i==1
替换为
$i==1
。您的if语句相当复杂。我建议将其替换为类似以下内容:
if(CheckSomeCondition($i,$page,$totalPages)){…}
,然后执行
的实际逻辑,如果
-以更可读的方式在该方法中进行检查(这可能会使您自己更容易找到问题)。嗯,当值成功设置时,它重置变量并返回true。嗯,当值成功设置时,它重置变量并返回true。他有多个条件strue,但他仍然可以使用for循环来执行此操作,所发生的只是他在一个页码列表中循环,并将活动页码加粗他有多个条件,但他仍然可以用for循环来实现这一点,所发生的一切就是他在一个页码列表中循环,并使活动页码变为粗体是的,这就解决了,谢谢你指出我自己的愚蠢之处。:)最受欢迎的是,在决定一个条件时一定要花一点时间,这样可以节省您的时间并使您的软件无bug。是的,这已经解决了,谢谢您指出我自己的愚蠢之处。:)最受欢迎的是,在决定一个条件时一定要花一点时间,这样可以节省您的时间并使您的软件无bug。
for ($i = 0; $i<=$totalpages; $i++){
 // do something
}