2015-12-13 19 views
11

Questo esempio è stato fornito come esempio alternativo (esempio 4 per la precisione) per scrivere i loop for su PHP.net.

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); 

Capisco for loop, io proprio non capisco il motivo per cui la variabile, $j, viene dichiarato in questa versione di scrivere un ciclo che stampa i numeri da 1 a 10.

FYI: Rimozione variabile dal ciclo for non fa assolutamente alcuna differenza per il risultato.

+1

Ottima domanda. Quel '$ j = 0' verrebbe valutato solo una volta e quindi' $ j + = $ i' è per ... Cosa? – JakeGould

+0

non sembra che 'j' stia facendo qualcosa oltre alla somma di' i' ... o.O – Andrew

+0

Beh, sembra che la documentazione abbia adottato uno stile simile alla lingua stessa. Gonfio e pieno di trucchi. – Richard

risposta

4

penso che è solo qui per illustrare il fatto che è possibile utilizzare dichiarazione multipla con le virgole.
È inutile qui ma mostrano un esempio della sintassi per:

[...] Ciascuna delle espressioni può essere vuoto o contenere più espressioni separate da virgole. In expr2, vengono valutate tutte le espressioni separate da una virgola ma il risultato viene preso dall'ultima parte. [...]

3

Anche se non sembra necessario in questo esempio. Sembra che $j è la memorizzazione la somma dei iterazioni:

1+2+3+4+5+6+7+8+9+10 = 55 

che può essere utile in alcune situazioni. Ciò significherebbe che questo stile di ciclo equivale a eseguire diverse operazioni su ogni iterazione, ad esempio ottenere la somma, il valore medio, il più grande, ecc. Il punto dell'esempio è che è possibile applicare più istruzioni separate da virgole.

2

Spiegazione

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); 

per cicli prende tre parti separate da virgola (;).

  1. inizializzazione
  2. confrontare e prova
  3. Incremento o decrementi.

    • Qui $ i = 1, $ j = 0 è l'inizializzazione.
    • $ i < = 10; è confrontare e testare
    • $ j + = $ i, print $ i, $ i ++ è di incremento o decrementi parte

Ora nel tuo incremento o decrementi separarsi avete tre compito.
1. è incremento di $ j allo scorso $ i 2. print $ i 3. incremento $ i da 1

Quindi nel tuo programma di $ j non è utile. Perché non sta prendendo parte allo o stampa o confronta e prova.

Così il ciclo è solo molto semplice se si rimuove $ j da ogni dove e scriverlo come

for ($i = 1; $i <= 10; $i++){ 
    print $i; 
} 

Ma quella variabile $ j potrebbe essere utilizzato dopo il ciclo da dove avete preso questo codice bloccare.

COME

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); 
print $j; 
Problemi correlati