Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    8

    Cancellare i valori duplicati da un array generato casualmente!!!

    Ciao a tutti a scuola ci è stato assegnato di fare il gioco del lotto facendo una tabella in php e generando dei valori casualmente e fin qua tutto bene.... Non riesco a capire come togliere i valori simili dalla riga ho provato sia con array_unique è vero che mi toglie i valori simili pero poi non posso inserirli nella tabella (almeno penso) perche devo usare print_r e mi da un output diverso (array[0]=>23 etc...) allego il codice se riesce qualcuno a darmi una mano....

    <html>
    <head>
    </head>
    <body>
    <table border="1">
    <?php
    $citta=array('Torino', 'Firenze', 'Roma', 'Napoli', 'Venezia', 'Piacenza', 'Milano', 'Reggio Calabria', 'Bologna');


    for($i=0; $i<count($citta); $i++){
    echo "<tr><td>$citta[$i]</td>";


    for($j=0; $j<10; $j++){
    $numeri = (mt_rand(1,90));
    echo "<td>$numeri</td>";
    }
    }
    echo "</tr>";
    ?>


    </table>
    </body>
    </html>

  2. #2
    Prova cosi, dovrebbe andare, ma sicuramente c'e un metodo più efficiente

    il codice sotto non estrae 2 numeri uguali sulla stessa ruota.

    Codice PHP:
    for ($i 0$i count($citta); $i++) {
        echo 
    "<tr><td>$citta[$i]</td>";

        
    $arrayUsciti = [];

        for (
    $j 0$j 10$j++) {
            
    $numeri = (mt_rand(190));

            if (
    in_array($numeri$arrayUsciti)) {
                
    $j--;
                continue;
            }
            echo 
    "<td>$numeri</td>";
            
    $arrayUsciti[] = $numeri;
        }


  3. #3
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    8
    Quote Originariamente inviata da bauleviaggiante Visualizza il messaggio
    Prova cosi, dovrebbe andare, ma sicuramente c'e un metodo più efficiente

    il codice sotto non estrae 2 numeri uguali sulla stessa ruota.

    Codice PHP:
    for ($i 0$i count($citta); $i++) {
        echo 
    "<tr><td>$citta[$i]</td>";

        
    $arrayUsciti = [];

        for (
    $j 0$j 10$j++) {
            
    $numeri = (mt_rand(190));

            if (
    in_array($numeri$arrayUsciti)) {
                
    $j--;
                continue;
            }
            echo 
    "<td>$numeri</td>";
            
    $arrayUsciti[] = $numeri;
        }

    Grazie mille funziona...pero la spiegazione del codice è la seguente ----> Hai creato un array vuoto per ogni riga poi hai confrontato i due array se un numero si ripete rifa la casella del numero.... Pero continue cosa significa ?
    E alla fine perché hai assegnato numeri ad ArrayUsciti ?


    Comunque Grazie mille

  4. #4
    Ecco il continue:

    http://php.net/manual/en/control-str...s.continue.php

    Codice PHP:
    //ciclo per le città
    for ($i 0$i count($citta); $i++) { 
        
        
    //mando a video la città
        
    echo "<tr><td>$citta[$i]</td>"

        
    //inizializzo una varialibile per mettere i numeri già estratti
        
    $arrayUsciti = []; 

        
    //ciclo per l'estrazione di 10 numeri casuali
        
    for ($j 0$j 10$j++) {

            
    //prendo un numero casuale da 1 a 90
            
    $numeri = (mt_rand(190)); 
            
            
    //controllo se il numero casuale è presente tra quelli usciti
            
    if (in_array($numeri$arrayUsciti)) { 
                
    //se presente decremento il contatore
                //per avere sempre 10 estrazioni alla fine
                
    $j--; 
                
    //salto le istruzioni successive e rinizio il ciclo per
                //l'estrazione dei numeri
                
    continue; 
            }
            
    //stampo il numero a video
            
    echo "<td>$numeri</td>";
            
    //assegno il numero stampato tra quelli usciti
            
    $arrayUsciti[] = $numeri
        } 

    Spero che i commenti ti aiutino a capire il ragionamento. Avere la soluzione senza capirla non ti serve a nulla.

Tag per questa discussione

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.