Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505

    Costruire e leggere un array bidimensionale

    Sto cercando di realizzare, fin'ora senza successo, il seguente scenario.
    Una pagina php mi chiede di inserire un numero, lo legge e lo invia a una seconda pagina php, la seconda pagina legge il numero in arrivo, diciamo che questo numero sia contenuto in $tot.
    Questa seconda pagina deve generare $tot sequenze di 5 numeri casuali compresi fra 1 e 100. Fin qui non ci sono problemi.
    I guai iniziano ora.
    La pagina che genera le sequenze causali deve anche salvarle in un array bidimensionale da inviare ad una terza pagina che dovrà inserire le $tot sequenze in un database un numero alla volta dato che la tabella ha 5 colonne, una per ogni numero di una sequenza.
    Codice PHP:
    $sequenza = array();
    $array_bidimensionale = array(); //va dichiarato così?
    for($n=0$n<$_REQUEST['tot']; $n++) {
        
    $i 0;
        while(
    $i<5) {
            
    $numero rand(1,100);
            if(!
    in_array($numero,$sequenza)) { //non voglio duplicati
                
    $sequenza[$i] = $numero;
                
    $i++;
            }
        }
        
    sort($sequenza); //ordino i numeri della sequenza

        //qui dovrebbe andarci il codice per inserire la sequenza corrente nell'array bidimensionale

    Non so come creare questo array bidimensionale e poi leggerlo, mi dareste una mano?

  2. #2
    Utente di HTML.it L'avatar di marco_c
    Registrato dal
    Jun 2004
    Messaggi
    1,047
    non basta che dentro l'if aggiungi l'istruzione?

    Codice PHP:
    if(!in_array($numero,$sequenza)) {
    ...
    array_bidimensionale[$n][$i] = $numero

    Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Si, ma come posso poi ordinare le varie sequenze una volta che si trovano nell'array bidimensionale?
    sort() funzionerebbe anche su questo?

    EDIT: no, non funziona come mi hai suggerito, ho scelto di generare 5 sequenze, stampando l'array bidimensionale risulta che c'è solo una sequenza, la prima, per le altre non viene stampato nulla, le impagino in una tabbella html e le righe 2, 3, 4 e 5 generano celle vuote, solo la prima contiene i numeri di una sequenza.

  4. #4
    Utente di HTML.it L'avatar di marco_c
    Registrato dal
    Jun 2004
    Messaggi
    1,047
    se hai bisogno di ordinare chiami il sort prima dell'assegnamento

    Codice PHP:
    sort($sequenza);
    array_bidimensionale[$n] = $sequenza 
    Per quanto riguarda il fatto che non ti funziona posta tutto il codice, anche l'estrazione dei dati.
    Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ho avuto lo stesso risultato, solo una sequenza stampata.

    Ecco il codice completo dello script
    Codice PHP:
    <table width="100%" align="center" border="0">
        <tr>
            <?php
                
    if(isset($_REQUEST['num_seq'])) { //devo generare le sequenze
                    //genero le sequenze
                    
    $sequenza = array(); //sequenza corrente
                    
    $sequenze = array(); //array bidimensionale
                    
    $i 0;
                    for(
    $n=0$n<$_REQUEST['num_seq']; $n++) {
                        while(
    $i<5) {
                            
    $numero rand(1,100);
                            if(!
    in_array($numero,$sequenza)) { //se il numero non è già nell'array $sequenza
                                
    $sequenza[$i] = $numero;
                                
    sort($sequenza);
                                
    $sequenze[$n] = $sequenza//metto la sequenza attuale nell'array bidimensionale
                                
    $i++; //aumento $i solo se il numero è stato inserito nell'array
                            
    }
                        }
                    }
            
    ?>
                    <td align="center">
                        <table width="30%" border="1">
                        <?php //2 colori da alternare per le righe della tabella
                            
    $colori = array("#cbc2bb","#ece9e6");
                            
    $riga 1;
                         
    ?>
                        <?php
                            
    for($n=0$n<$_REQUEST['num_seq']; $n++) { //per ogni sequenza
                        
    ?>
                                <tr bgcolor="<?php print $colori[$riga%2]?>">
                                <?php
                                    
    for ($i=0$i<5$i++) { //per ogni numero della sequenza
                                        
    print('<td align="center">');
                                        print(
    $sequenze[$n][$i]); //stampo il numero
                                        
    print('</td>');
                                }
                                
    ?>
                                </tr>
                        <?php
                                $riga
    ++;
                            }
                        
    ?>
                        </table>
                    </td>
            <?php
                
    } else { //devo chiedere quante sequenze generare
            
    ?>
                    <td align="center">
                        <table width="30%" border="0">
                            <tr>
                                <td align="center">
                                    <form name="quante" action="numeri.php">
                                        Quante sequenze vuoi generare? <input type="text" name="num_seq" size="3"> <input type="submit" name="submit" value="Genera">
                                    </form>
                                </td>
                            </tr>
                        </table>
                    </td>
            <?php
                
    }
            
    ?>
        </tr>
        <tr>
            <td></td>
        </tr>
        <tr>
            <td align="center">
                [url="index.php"]Home[/url]
            </td>
        </tr>
    </table>

  6. #6
    Utente di HTML.it L'avatar di marco_c
    Registrato dal
    Jun 2004
    Messaggi
    1,047
    guarda, non ho letto tutto il codice, ma ho visto subito all'inizio un errore, inizializzi $i fuori dal ciclo interno. ovviamente così non funzionerà mai
    Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ma porc... hai ragione, non me ne ero proprio accorto.

    Grazie

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.