Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di E.C.Web
    Registrato dal
    Dec 2011
    Messaggi
    139

    [PHP] Problema ciclo While

    Ragazzi non riesco proprio a capire quale sia il problema di questo ciclo

    Codice PHP:

    $Segmenti 
    0;

    $Segmenti_1 2;

    while (
    $Segmenti == $Segmenti_1 ) { 
           echo 
    "<div id='Segmenti'></div>
    "
    $Segmenti++;

    Deve ripetermi il div finchè $Segmenti non è uguale a $Segmenti_1... ma non stampa nulla!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    while ($Segmenti == $Segmenti_1 )

    prima iterazione:
    $Segmenti = 0;
    $Segmenti_1 = 2;

    quindi
    $Segmenti != $Segmenti_1
    condizione subito falsa, nel while non ci entra e fine del ciclo

  3. #3
    Usa un ciclo for
    codice:
    for($i=0;$i>1;$i++) {  
           echo "<div id='Segmenti'></div>
    ";
    }
    Dove $i sarebbe come segmenti e aumenta sempre di 1
    e il ciclo continua finche $i non è maggiore di 1 quindi per 2 volte

  4. #4
    Utente di HTML.it L'avatar di E.C.Web
    Registrato dal
    Dec 2011
    Messaggi
    139
    Ho provato con il for, ma mi da sempre problemi, mi và in loop.

    Codice PHP:
    for($Segmenti=0;$Segmenti=$Segmenti_1;$Segmenti++) { echo "<div id='Segmenti'></div>
    "
    ; } 
    Poi ritornando al while, invece mi và perfettamente, non capisco però la teoria o.o perche usare != invece di ==, alla fine io al codice gli chiedo di stopparsi quando Segmenti è identico a Segmenti_1 e non quando è diverso ò.ò, in teoria anche 0 è diverso...

    Non capisco

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Hai dei seri problemi a definire le condizioni dei cicli.

    $Segmenti=$Segmenti_1

    non è un confronto, è un'assegnazione, quindi la condizione del for non diventerà mai falsa ed hai il loop.

    devi mettere
    $Segmenti <= $Segmenti_1
    se vuoi che il for termini quando $Segmenti diventa uguale a $Segmenti_1

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Originariamente inviato da E.C.Web

    Poi ritornando al while, invece mi và perfettamente, non capisco però la teoria o.o perche usare != invece di ==, alla fine io al codice gli chiedo di stopparsi quando Segmenti è identico a Segmenti_1 e non quando è diverso ò.ò, in teoria anche 0 è diverso...

    Non capisco
    while ($Segmenti == $Segmenti_1)

    vuol dire: nel mentre che $Segmenti è uguale a $Segmenti_1...

    ovvero, se $Segmenti è uguale a $Segmenti_1, fai quello che c'è nel ciclo, se non lo è, termina il ciclo.

    Essendo le 2 variabili subito diverse, la condizione "$Segmenti == $Segmenti_1" è falsa, quindi il ciclo non viene eseguito.

    Se invece fai
    while($Segmenti != $Segmenti_1)
    vuol dire: nel mentre che $Segmenti è diverso da $Segmenti_1, esegui il ciclo.

    All'inizio $Segmenti è diverso da $Segmenti_1 e quindi la condizione è verificata e si esegue il codice del ciclo, al secondo giro è ancora verificata (1 è diverso da 2) e viene eseguito.
    Al terzo giro invece non è più verificata, (2 è uguale a 2) e finisce il ciclo

  7. #7
    Lo hai dichiarato male infatti, se vuoi che ad esempio si ripeta per 2 volte il ciclo for
    fai cosi:
    codice:
    for($Segmenti=0;$Segmenti<2;$Segmenti++){...}
    L'azione si ripete finche $Segmenti non sarà maggiore di 2 quindi 2 volte

    Se invece vuoi farlo col while fai come ti ha detto alhazred il while non funzionava
    perchè appunto le 2 variabili erano subito diverse

    Per chiarire:
    il while continua il ciclo finche la condizione è vera
    il for invece continua finche la variabile numerica non sarà maggiore
    o inferiore dell'altra

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Originariamente inviato da Plopper
    Lo hai dichiarato male infatti, se vuoi che ad esempio si ripeta per 2 volte il ciclo for
    fai cosi:
    codice:
    for($Segmenti=0;$Segmenti>1;$Segmenti++){...}
    E' sbagliato anche questo, la condizione è subito falsa, $Segmenti è pari a 0, che non è > 1

  9. #9
    Originariamente inviato da Alhazred
    E' sbagliato anche questo, la condizione è subito falsa, $Segmenti è pari a 0, che non è > 1
    Vero piccola distrazione grazie per la correzione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.