Ciclo While

di Anonimizzato24465 il
11 risposte
Ciao a tutti,
volevo far comparire in verticale una scritta come nell'esempio(parallelepipedo), e ho scritto il seguente codice.
mi aspettavo che venisse creata stile tabella la scritta in verticale, e che la iniziasse con la posizione 0 (cioè p) per poi incrementarsi. L'istruzione dovrebbe terminare il suo ciclo una volta che il $contaparole è arrivato a 15 (quindi la "o" finale). Sto cercando di imparare quindi vi chiedo scusa, ma dove sto sbagliando? mi da l'errore di maximum execution time come se ripetesse il ciclo all'infinito. Ovviamente nel browser non vedo un bel niente.

<table>
<?php
$parola="parallelepipedo";
$contaparole=0;

while ($contaparole<=15);
{
echo "<tr><td>$parola[$contaparole]</td></tr> <br />";
$contaparole++
}
echo "fine";
?>
</table>

11 Risposte

  • Pad86 ha scritto:


    Ciao a tutti,
    volevo far comparire in verticale una scritta come nell'esempio(parallelepipedo), e ho scritto il seguente codice.
    mi aspettavo che venisse creata stile tabella la scritta in verticale, e che la iniziasse con la posizione 0 (cioè p) per poi incrementarsi. L'istruzione dovrebbe terminare il suo ciclo una volta che il $contaparole è arrivato a 15 (quindi la "o" finale). Sto cercando di imparare quindi vi chiedo scusa, ma dove sto sbagliando? mi da l'errore di maximum execution time come se ripetesse il ciclo all'infinito. Ovviamente nel browser non vedo un bel niente.

    <table>
    <?php
    $parola="parallelepipedo";
    $contaparole=0;

    while ($contaparole<=15);
    {
    echo "<tr><td>$parola[$contaparole]</td></tr> <br />";
    $contaparole++
    }
    echo "fine";
    ?>
    </table>
    C'è un punto e virgola al while che non ci dovrebbe essere.
  • Grazie, non lo avevo notato, l'ho tolto e ho corretto anche il $contaparole al limite di 14 lettere visto che parte da 0.
    Ma adesso mi da questo errore

    Parse error: syntax error, unexpected '}'

    ma la parentesi ci vuole per chiudere, o sbaglio?
  • Se il codice è sempre quello di sopra ci manca il punto e virgola a $contaparole++, altrimenti rimetti il codice.
  • Ottimo ,
    adesso funziona, inoltre ho fatto un paio di modifiche, innanzitutto ho messo "fine" in un altro blocco <?php> altrimenti me lo scriveva all'inizio, e siccome lasciava anche 14 "a capo" ho eliminato il br / perché era inutile in questo caso, essendo una tabella, il codice corretto per chi è interessato è il seguente:
    <?php
    $parola="parallelepipedo";
    $contaparole=0;
    while ($contaparole<=14)
    {
    echo "<tr><td>$parola[$contaparole]</td></tr>";
    $contaparole++;
    }
    ?>
    </table>
    <?php
    echo "fine";
    ?>

    grazie ancora per gli aiuti
  • Con lo stesso esercizio di prima volevo contare le vocali in quella parola (Parallelepipedo) e quindi ho aggiunto un altro while in questo modo:
    la variabile aggiunta è $contavocali=0
    $parola="parallelepipedo";
    $contavocali=0;
    $contaparole=0;
    while ($contaparole<=14)
    {
    echo "<tr><td>$parola[$contaparole]</td></tr>";
    $contaparole++;
    }
    while ($contaparole<=14)
    {
    $contaparole++;
    if (STRPOS("aieou", strtoupper($parola[$contaparole])) !==false)
    $contavocali++;
    }
    echo $contavocali;
    ?>
    </table>
    in teoria dovrebbe in ogni caso incrementare il $contaparole,controllare nella posizione 0(poi1,2,ecc) se sono presenti le lettere in quella stringa, e se lo sono (diverso da false, quindi true) incrementare il $contavocali , e alla fine scrivere il risultato del $contavocali. probabilmente potevo non mettere 2 volte il while , ma a parte questo mi da come risultato sempre 0, , in ogni caso voi usando il whilw come avreste fatto?
  • Ti basta solo il primo while. Mentre conti le lettere, controlli anche se quella lettera è una vocale con l'if. Se lo è aumenti il contatore contavocale altrimenti no. E' superfluo il secondo while.
  • $parola="parallelepipedo";
    $contavocali=0;
    $contaparole=0;
    while ($contaparole<=14)
    {
    echo "<tr><td>$parola[$contaparole]</td></tr>";
    $contaparole++;
    if (strpos("aieou"($parola[$contaparole]) !==false)
    $contavocali++;
    }
    echo $contavocali;
    ?>
    </table>
    <?php
    echo "fine";
    ?>

    provando in questo modo mi da un errore sul $contavocali++:
    Parse error: syntax error, unexpected '$contavocali' (T_VARIABLE) in D:\XAMPP\htdocs\HTML5\esempicicli.php on line 21
    riesci ancora ad aiutarmi?
  • Pad86 ha scritto:


    $parola="parallelepipedo";
    $contavocali=0;
    $contaparole=0;
    while ($contaparole<=14)
    {
    echo "<tr><td>$parola[$contaparole]</td></tr>";
    $contaparole++;
    if (strpos("aieou"($parola[$contaparole]) !==false)
    $contavocali++;
    }
    echo $contavocali;
    ?>
    </table>
    <?php
    echo "fine";
    ?>

    provando in questo modo mi da un errore sul $contavocali++:
    Parse error: syntax error, unexpected '$contavocali' (T_VARIABLE) in D:\XAMPP\htdocs\HTML5\esempicicli.php on line 21
    riesci ancora ad aiutarmi?
    prova con le cose semplici cambia l'if in $parola[$contaparole] == 'a' || $parola[$contaparole] == 'e' || $parola[$contaparole] == 'i' || $parola[$contaparole] == 'o' || $parola[$contaparole] == 'u'. Anche perchè strpos non si usa così e non ti serve per quello che stai facendo.
  • $parola="parallelepipedo";
    $contavocali=0;
    $contaparole=0;
    while ($contaparole<=14)
    {
    echo "<tr><td>$parola[$contaparole]</td></tr>";
    $contaparole++;
    if ($parola[$contaparole] == 'a' || $parola[$contaparole] == 'e' || $parola[$contaparole] == 'i' || $parola[$contaparole] == 'o' || $parola[$contaparole] == 'u')
    $contavocali++;
    }
    echo $contavocali;

    non so come ringraziarti, grazie a te riesco a capire dove sbaglio ed a imparare cose nuove. In questo modo mi da il risultato corretto delle vocali, ma c'è un problema:
    Notice: Uninitialized string offset: 15 in D:\XAMPP\htdocs\HTML5\esempicicli.php on line 22
    mi escono 5 di questi messaggi riferiti alla riga dell' "if", stesso numero delle vocali utilizzate.questo può essere per il fatto che ho usato le parentesi quadre?ho rpovato con le graffe ma non può funzionare in questo modo. Sicuramente mi sfugge ancora qualcosa..
  • Perchè nella variabile $parola durante il controllo vai oltre l'indice consentito. Devi ricordarti che in un array gli indici vanno da 0 a n-1 e quindi nel tuo caso vai all'indice numero 15. Ma la cosa sbagliata è che aumenti contaparole prima del controllo. Contaparole devi aggiornarlo alla fine del while.
  • Grande
    ho messo il contaparole sotto il contavocali, si è risolto tutto.
    adesso ho capito i miei errori,Grazie mille.
Devi accedere o registrarti per scrivere nel forum
11 risposte