php for-loop никогда не выполняется - PullRequest
0 голосов
/ 16 ноября 2011

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

<?php
ini_set('error_reporting', E_ALL);

$i=0.0;
$j=1.0;
$max=3000;

for ($z=0; $z==$max;  $z++) {
  $i += (1.0/$max);
  $j -= (1.0/$max);

  echo "j=$j - i= $i <br>";
  if( ($z % 100) == 0){

      echo "j=$j  ¦ i= $i <br>";
  };
};

?>

РЕДАКТИРОВАТЬ: как вы видите, можно учиться глупости; -)

Ответы [ 4 ]

8 голосов
/ 16 ноября 2011

Никогда не будет введено.

for ($z=0; $z==$max;  $z++) 

z не может быть == до $max


Попробуйте вместо этого:

for ($z=0; $z<=$max;  $z++)
3 голосов
/ 16 ноября 2011
for ($z=0; $z==$max;  $z++) 

Вы хотите $ z <= $ max. </p>

Середина цикла for является условным оператором, и если он оценивается как false, он не выполняется.цикл по сути такой же как:

$z = 0;
while($z == $max){
     // Do Stuff
     $z++;
}
0 голосов
/ 16 ноября 2011

Поскольку цикл будет выполняться только в том случае, если второе утверждение истинно в вашем случае $z == $max. Это определенно неверно, потому что вы уже определили, что значение $ z равно 0 , а $ max равно 3000. Это как если бы вы ввели for($z=0;0 == 3000;$z++){}

0 голосов
/ 16 ноября 2011

Вручную :

for (expr1; expr2; expr3)
    statement

Первое выражение (expr1) оценивается (выполняется) один раз безоговорочно в начале цикла.начало каждой итерации, expr2 оценивается.Если значение равно TRUE, цикл продолжается и выполняются вложенные операторы.Если значение равно FALSE, выполнение цикла заканчивается.

В конце каждой итерации вычисляется (выполняется) expr3.

Возможно, вы захотите поставить $z<=$maxесть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...