2013-04-22 2 views
0
<?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 Infinite While Loop, Unknown Причина

+8

Заменить '$ i = 1' с' $ i == 1' в 'while'-loop. – BlitZ

+0

Ваше if-заявление довольно сложно. Я бы рекомендовал заменить его на что-то вроде: 'if (CheckSomeCondition ($ i, $ page, $ totalPages)) {...} ', а затем сделать фактическую логику' if'-check более читаемым способом в этом методе (что, вероятно, облегчит вам также поиск проблемы). – Kjartan

ответ

2

Ваш, если условие имеет проблему

Изменение

$i =1 

с

$i==1 
1

У вас есть несколько мест, которые вы сбросили $ I, случайно я предполагаю

$i=1

и

$i=$page

заменить их ==

+0

Ну, он сбрасывает переменную и возвращает true, поскольку значение было установлено успешно – DarkBee

0
<?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++; 
      } 
?> 

Изменения в 1-й и второй, если условия.
1) $ я == 1
2) $ я == $ страница

+0

Yup, это исправлено, спасибо за то, что вы указали мою собственную глупость. :) –

+0

Очень приветствуем, всегда занимайте время, определяя условия, которые он сэкономит ваше время и сделает вашу ошибку программной ошибкой свободной. –

0

есть причина, почему это не может быть осуществлено с использованием для цикла? Хотя циклы всегда опасны и легко вызывают проблемы, если есть сценарий, вызывающий цикл навсегда.

например.

for ($i = 0; $i<=$totalpages; $i++){ 
// do something 
} 
+0

У него есть несколько условий – DarkBee

+0

ИСТИНА, но он все еще может это сделать с помощью цикла for, все, что происходит, это цикл по списку номеров страниц и включение активного номера страницы – MadDokMike

0

Существует ряд вопросов в условиях

первым:

|| $ Я = 1 ||

allways return true. Изменение на

|| $ Я == 1 ||

Второе: тот же случай из самана

если ($ я = $ страница) // Allways вернуться попробовать это операция отведение

Изменить на:

if ($ i == $ page)