PHP для Loop Confusion - PullRequest
       6

PHP для Loop Confusion

1 голос
/ 08 апреля 2011

Я новичок в мире кодирования, и я впервые разбираюсь в циклах. Я видел пример на веб-сайте и был совершенно смущен результатом.

/* Sample Code 1 */

$counter=0
$start=1

for($start;$start<11;start++) {
   $counter=$counter+1;
   print $counter;
}

Это дает мне результат 1,2,3,4,5,6,7,8,9,10

Теперь, если я обновлю код следующим образом

/* Sample Code 2 */

$counter=11;
$start=1;

for($start;$start<11;start++) {
   $counter=$counter+1;
   print $counter;
}

Это дает мне результат 12,13,14,15,16,17,18,19,20

Однако, если я обновлю код следующим образом

/* Sample Code 3 */

$counter=11;
$start=1;

for($start;$start<11;start++) {
   $counter=$counter-1;
   print $counter;
}

Я получаю результат 10,9,8.7.6,5,4,3,2,1

Пожалуйста, поправьте меня, если я ошибаюсь

Если переменная $ counter имеет значение 11, я, по сути, начинаю приращение с 11 + 1 в коде $ counter = $ counter + 1. Это правильно?

Но что меня смущает, так это то, как возможен результат в примере кода 2, если мое конечное значение в цикле FOR равно $ start <11. Разве это не значит, что оно должно быть меньше 11? </p>

Ответы [ 5 ]

0 голосов
/ 08 апреля 2011

Пожалуйста, проанализируйте ваш код .. у вас есть явная путаница с ч / б $ start и переменной $ counter.пожалуйста, используйте var_dump, чтобы увидеть, через что проходят ваши переменные

0 голосов
/ 08 апреля 2011

Я объясню вам все приведенные выше примеры:

Пример кода 1

$counter=0;
$start=1;

Это объявление переменной для объявления и инициализации обеих переменных.

for($start;$start<11;start++) {
    $counter=$counter+1;

for loop имеет структуру:

for({loop initialization}; {loop condition}; {per loop process}){
    //the rest of loop process
}

Пояснение :

  • Как видите, пример № 1 запускаетсяцикл от 1 (взят из $start = 1) и выполнение loop for as long as $start is smaller than 11.Чтобы предотвратить его зацикливание, к этому коду добавьте $start++, что означает $start = $start + 1.Таким образом, для каждого цикла добавляется $start на 1.
  • , loop condition должен возвращать true для запуска цикла.Если он вернет false, цикл прекратит работу.

Теперь давайте рассмотрим, что находится внутри этого цикла:

$counter=$counter+1;
print $counter;

Вы видите: $counter=$counter+1.Это означает, что вы увеличиваете $ counter на один для каждого цикла и печатаете получившийся $counter.

Давайте разберем процесс (мы начнем цикл # с 1, поскольку это то, что определено $start = 1):

loop #   $start  ($start < 11?)  $counter ($counter = $counter + 1)
1        1       Y               1
2        2       Y               2
3        3       Y               3
4        4       Y               4
5        5       Y               5
6        6       Y               6
7        7       Y               7
8        8       Y               8
9        9       Y               9
10       10      Y               10
11       11      N               11

Из вышеприведенной разбивки процесса видно, что условие ($start < 11) приводит к false в цикле # 11.Вот почему результат равен 1..10, а не 1..11.

То же самое с Пример # 2 :

$counter=11;
$start=1;

Структура цикла:

for($start;$start<11;start++) {
    $counter=$counter+1;

Давайте разберем этот процесс:

loop #   $start  ($start < 11?)  $counter ($counter = $counter + 1)
1        1       Y               12
2        2       Y               13
3        3       Y               14
4        4       Y               15
5        5       Y               16
6        6       Y               17
7        7       Y               18
8        8       Y               19
9        9       Y               20
10       10      Y               21
11       11      N               22

Это выведет 12..21.Потому что когда произошел цикл # 11, он проверяет, что $start < 11 равно false.Поэтому цикл завершен.

0 голосов
/ 08 апреля 2011

Вот описание, которое я написал

for (//declare loop
$start = 0; //declare starting value and the value to store it in
$start < 10; // Each time it comes through, if $start is under 10, do the loop. if it is 10, exit
$start++ //Increment $start by 1
)
0 голосов
/ 08 апреля 2011

кажется, что вы пропустили «21» в результатах второго примера. Может ли это быть причиной вашего замешательства?

0 голосов
/ 08 апреля 2011

Когда вы запускаете цикл, $start меньше 11. Затем он увеличивается в конце итерации. Затем цикл заканчивается, если он достиг 11.

То есть, если $start равно 10, то оно войдет в цикл. Он достигает 11, поэтому оператор for выходит из цикла. Это 11, когда цикл заканчивается.

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