цикл не продолжится - PullRequest
       22

цикл не продолжится

0 голосов
/ 01 декабря 2011

У меня есть код, который должен продолжаться до 670

$pages = 670;
$part1 = 16;
$part2 = 31;
$part3 = 99;    
for ($i=1; $i<=$pages; $i++){
    if ($i == 1){
       echo "1st part, ";
    }elseif ($i == $part1){
       $pages = $part2 - $part1;
       echo $pages . ", ";
       $pages = 0;
    }elseif ($i == $part2){
       $pages = $part3 - $part2;
       echo $pages . ", ";
       $pages = 0;
    }
  echo "<strong>" . $i . "</strong>" . ", ";
}

Но когда я открою php, результат будет:

  • 1-йчасть 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 15, 16 ,

В чем проблема, чтобы цикл for продолжался?

* Примечание: часть 2 - часть 1 = 15, часть 3 - часть 2 = 68.

Ответы [ 5 ]

3 голосов
/ 01 декабря 2011

Как только $i достигает 16, вы устанавливаете $pages = 0;, поэтому условие $i <= $pages становится ложным и цикл останавливается.

3 голосов
/ 01 декабря 2011

Строка: $pages = 0; - это проблема.Измените имя переменной.

1 голос
/ 01 декабря 2011

Вы меняете

$pages = 0; 

И вот почему это не будет продолжаться, потому что это уже не 670.

0 голосов
/ 01 декабря 2011

Чего именно вы пытаетесь достичь?В тот момент, когда вы выполняете первую часть elseif, то есть $ i == $ part1, вы сбрасываете $ pages в 0. Таким образом, вы печатаете не жирный 15, а затем жирным шрифтом значение 16. Это означает, что на этом этапе$ i == 16 и $ pages == 0. Поэтому вы выйдете из цикла;Условие $ i <= $ pages оценивается как ложное. </p>

Если вы просто хотите сосчитать до 670, почему бы вам не удалить оба, $ pages = $ part2 - $ part1;и $ pages = 0;заявления?Вы можете просто использовать echo ($ part2 - $ part1).",";напрямую

То же самое относится ко второму блоку elseif

0 голосов
/ 01 декабря 2011

Во-первых, если вы проверите, если $i == $part1

Пример:

$i = 16;

elseif($i == $part1) // true
{
    $pages = $part2 - $part1; // $pages = 15 -> for loop = for($i <= $pages) will break cause $i = 16
    echo $pages . ", ";
    $pages = 0; // -> again forloop, $i is bigger then pages cause pages = 0;
}

Посмотрите на свои переменные, возможно, вы можете объяснить нам, что вы хотите сделать, тогда мы можемпомочь вам решить.

...