Sono nuovo nel mondo della programmazione ed è la prima volta che capisco i loop. Ho visto un esempio su un sito web e sono completamente confuso dal risultato.
/* Sample Code 1 */
$counter=0
$start=1
for($start;$start<11;start++) {
$counter=$counter+1;
print $counter;
}
Questo mi dà il risultato di 1,2,3,4,5,6,7,8,9,10
Ora se aggiorno il codice come segue
/* Sample Code 2 */
$counter=11;
$start=1;
for($start;$start<11;start++) {
$counter=$counter+1;
print $counter;
}
Questo mi dà il risultato 12,13,14,15,16,17,18,19,20
Tuttavia se aggiorno il codice come segue
/* Sample Code 3 */
$counter=11;
$start=1;
for($start;$start<11;start++) {
$counter=$counter-1;
print $counter;
}
Ottengo il risultato 10,9,8,7,6,5,4,3,2,1
Perfavore, correggimi se sbaglio
Se il contatore $ variabile ha il valore di 11, essenzialmente inizio l'incremento a 11 + 1 nel codice $ counter = $ counter + 1. È corretto?
Ma ciò che mi confonde è che come è possibile ottenere il codice di esempio 2 se il mio valore finale nel ciclo FOR è $ start <11. Non significa che deve essere inferiore a 11?
risposte:
0 per risposta № 1Quando inizi il ciclo, $start
è inferiore a 11. Quindi viene incrementato alla fine dell'iterazione. Quindi, il ciclo termina se ha raggiunto 11.
Cioè, se $start
è 10, quindi entrerà nel ciclo. Raggiunge l'11, quindi il for
la dichiarazione esce dal ciclo. È 11 quando il ciclo finisce.
0 per risposta № 2
Ecco una descrizione che ho scritto
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 per risposta № 3
sembra che manchi "21" nei tuoi secondi risultati di esempio. Potrebbe essere questa la causa della tua confusione?
0 per risposta № 4
Ti darò una spiegazione da tutti gli esempi sopra:
Codice di esempio 1
$counter=0;
$start=1;
Questa è una dichiarazione variabile per dichiarare e inizializzare entrambe le variabili.
for($start;$start<11;start++) {
$counter=$counter+1;
for loop
ha una struttura:
for({loop initialization}; {loop condition}; {per loop process}){
//the rest of loop process
}
Spiegazione:
- Come puoi vedere, esempio # 1 avvia il ciclo da 1 (tratto da
$start = 1
) e facendoloop for as long as $start is smaller than 11
. Per impedire il looping per sempre, aggiungere quel codice$start++
che si traducono in$start = $start + 1
. In questo modo, per ogni ciclo,$start
è aggiunto da 1. - il
loop condition
deve tornaretrue
per far funzionare il ciclo. Se ritornafalse
, il ciclo si chiuderà.
Ora, esaminiamo cosa c'è dentro quel ciclo:
$counter=$counter+1;
print $counter;
Vedi lì: $counter=$counter+1
. Significa che si incrementa il contatore $ di uno per ogni ciclo e si stampa il risultato $counter
.
Analizziamo il processo (iniziamo il ciclo # con 1
come è ciò che è definito da $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
Dall'analisi del processo sopra, possiamo vedere quella condizione ($start < 11
) è risultato in false
sul ciclo # 11. Ecco perché il risultato è 1..10
no 1..11
.
Lo stesso vale per Esempio # 2:
$counter=11;
$start=1;
Struttura ad anello:
for($start;$start<11;start++) {
$counter=$counter+1;
Analizziamo questo processo:
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
Questo uscirà 12..21
. Perché quando si è verificato il ciclo # 11, lo controlla $start < 11
è false
. Pertanto, il ciclo si chiude.
0 per risposta № 5
Per favore analizza il tuo codice .. hai una chiara confusione b / n $ start e $ counter variable. per favore usa var_dump per vedere cosa stanno passando le tue variabili