как изменить условие цикла в зависимости от материала? - PullRequest
1 голос
/ 26 апреля 2010

под этим вопросом я имею в виду, что если, например, чье-то имя пользователя будет «bob», тогда условие цикла while будет ($ i <10), а если имя пользователя является чем-то другим, то условие цикла while будет ($ i> 10)

if($username == "bob")
{
   //make this while loop condition: ($i < 10)
   // it means: while($i <10){ so stuff}
}
else
{
   //make the while loop condition: ($i >10)
}

Ответы [ 5 ]

4 голосов
/ 26 апреля 2010

Сделайте do_stuff функцией, тогда она отлично читается (хотя «боб» в специальном корпусе кажется в лучшем случае сомнительным).

if($username == "bob")
{
   while($i<10) {
       do_stuff();
   }
}
else
{
   while($i>10) {
       do_stuff();
   }
}
2 голосов
/ 26 апреля 2010
while( ($username == 'bob' && $i <10 ) XOR $i > 10){}

$username == 'bob' будет оцениваться первым, если получится true, а затем $i < 10.

$var1 XOR $var2 - это true, только если один из $var1, $var2 равен true , но не оба.

Но я сам пойду с этим .

0 голосов
/ 26 апреля 2010

Чтобы ваш код был простым:

if ($ username == "bob") { while ($ i <10) { } </p>

} еще { while ($ i> 10) { }

}

Существуют и другие лучшие способы справиться с этим, но они могут затруднить понимание вашего кода, например использование eval, которое мне не нравится.

0 голосов
/ 26 апреля 2010

Это то, что вы имеете в виду? Вы можете просто пойти другим путем в зависимости от успеха или неудачи if. Если код внутри такой же, просто вызовите метод, чтобы избежать его дублирования.

if($username == "bob")
{
   //make this while loop condition: ($i < 10)
   // it means: while($i <10){ so stuff}
   while ($i < 10) {
       call_method();
   }
}
else
{
   while ($i > 10) {
       call_method();
   }
}
0 голосов
/ 26 апреля 2010

Попробуйте создать два разных цикла while внутри блоков if и else.

...