Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    323

    Incasinato con gli array

    Ciao,
    mi sto incasinado con gli array:

    ho una classe con una variabile (che dovrebbe essere una array).
    Vorrei che fosse un array del tipo mioarray["miovalorecolonna1"], mioarray["miovalorecolonna2"].
    In una funzione della classe tiro fuori dei dati da un db mysql ed alcuni li vorrei mettere in questo array.

    Tipo
    codice:
    while($riga=mysql_fetch_assoc($rs)){
    mioarray["miovalorecolonna1"]=$riga["miacolonnax"]
    mioarray["miovalorecolonna2"]=$riga["miacolonnay"]
    }
    Questa operazione la metto nel costruttore della classe ed una volta instanziato l'oggetto dovrei riprendere i dati in qualche modo scorrndoli con un foreach.

    Qualcuno potrebbe dirmi come fare più o meno sta cosa? Anche cercando su internet non riesco a venirne a capo.



    Peppe
    someone told me
    love would all save us
    but how can that be
    look what love gave us

  2. #2
    la variabile array (così come tutte le altre variabili utilizzate da più metodi della classe) deve essere dichiarata pubblica; quindi la sua dichiarazione va messa al di fuori di qualunque metodo. inoltre, le variabili pubbliche non devono essere richiamate in modo classico tipo $nome_variabile (come si sa nella normale programmazione procedurale), ma esattamente come richiami gli altri metodi della classe, quindi con la sintassi: $this->nome_variabile.

    esempio:

    Codice PHP:
    class mia_classe {
        var 
    mioarray = array();

        function 
    mia_classe() {    // costruttore
            
    $this->variabile1["miovalorecolonna1"] = $valore_1;
            
    $this->variabile1["miovalorecolonna2"] = $valore_2;
        }

        function 
    metodo1() {
            return 
    $this->variabile1["miovalorecolonna1"];
        }


  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    323
    Ok, però l'array dovrebbe essere multidimensionale con nomecolonna1 e nomecolonna2 come indici.

    Per poi fare qualcosa del genere:

    Codice PHP:
    <?php
    $x 
    = new mia_classe();
    while(
    $y $x->metodo1()){
       echo 
    $y["nomecolonna1"]." - ".$y["nomecolonna2"];
    }

    ?>
    Magari io voglio fare una cosa più complicata del normale, il mio intento è solo mettere dei dati un un array e riportarli fuori, a patto che questo array sia multidimensionale e con indici testuali....

    someone told me
    love would all save us
    but how can that be
    look what love gave us

  4. #4
    Originariamente inviato da stoppy
    echo $y["nomecolonna1"]." - ".$y["nomecolonna2"];
    questo è un array monodimensionale... gli array multimensionali hanno più indici, ad esempio:

    Codice PHP:
    // bidimensionale
    $y["nomecolonna1"][0];

    // trimensionale
    $x["nomecolonna1"][0]['prova']; 
    comunque sia il concetto non cambia, gli array multidimensionali in PHP non sono altro che array di array, con una definizione tipo questa (array bidimensionale):

    codice:
    Array (
        [0] => Array(),
        [1] => Array()
    )
    in quelli tridimensionali ogni sotto-array di livello 2 conterrà ulteriori array di livello 3, e così via...

    gli indici testuali (array associativi) non cambiano nulla al concetto, dipende semplicemente dal modo in cui tu definisci il tuo array.

  5. #5
    Originariamente inviato da OhMyGod
    Codice PHP:
    class mia_classe {
        var 
    mioarray = array();

        function 
    mia_classe() {    // costruttore
            
    $this->variabile1["miovalorecolonna1"] = $valore_1;
            
    $this->variabile1["miovalorecolonna2"] = $valore_2;
        }

        function 
    metodo1() {
            return 
    $this->variabile1["miovalorecolonna1"];
        }

    scusa, qua ho ovviamente scritto stupidaggini.... le varie dichiarazioni "$this->variabile1" devono essere sostituite con "$this->mioarray"...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    323
    Ok...
    partendo dal fatto che ho sbagliato il termine:

    come faccio un array che abbia come indici "id", "nome", "cognome" e che con una query sql lo riempio con un

    Codice PHP:
    while($riga=mysql_fetch_assoc($rs)){
    $this->myarr["id"] = $riga["id];
    etc.....

    In modo che pi lo posso restituire ed accederci?
    someone told me
    love would all save us
    but how can that be
    look what love gave us

  7. #7
    eh questo dipende da quello che devi fare esattamente... la query che riempie l'array quanti record restituisce? soltanto un record, oppure più di uno? se restituisce un solo record puoi fare così:

    Codice PHP:
    $riga=mysql_fetch_assoc($rs);
    $this->myarr["id"] = $riga["id"];
    $this->myarr["campo_2"] = $riga["campo_2"];
    $this->myarr["campo_3"] = $riga["campo_3"];
    // ... ecc..... 
    unset($riga); 
    se invece la query restituisce più di un record, allora devi necessariamente usare un array bidimensionale:

    Codice PHP:
    $i 0;
    while(
    $riga=mysql_fetch_assoc($rs)){
        
    $this->myarr[$i]["id"] = $riga["id"];
        
    $this->myarr[$i]["campo_2"] = $riga["campo_2"];
        
    $this->myarr[$i]["campo_3"] = $riga["campo_3"];
        
    // ...etc.....
        
    $i++;
    }
    unset(
    $riga);
    unset(
    $i); 
    in quest'ultimo caso l'array risultante sarà tipo questo:

    codice:
    Array (
        [0] => Array (
                      [id] => val1
                      [campo_2] => val2
                      [campo_3] => val3
                  )
        [1] => Array (
                      [id] => val1
                      [campo_2] => val2
                      [campo_3] => val3
                  )
    )

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    323
    ...secondo caso.
    Con la $i l'array si "ingrandisce di conseguenza"?

    Una volta riepito, per resituirlo basta un return?

    Per tirarne fuori i valori mi basta un altro while?
    someone told me
    love would all save us
    but how can that be
    look what love gave us

  9. #9
    Con la $i l'array si "ingrandisce di conseguenza"?


    Una volta riepito, per resituirlo basta un return?


    Per tirarne fuori i valori mi basta un altro while?
    Sì, puoi usare un while ma è sconsigliato. per scorrere gli array è più performante la struttura foreach()

  10. #10
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Originariamente inviato da OhMyGod
    Sì, puoi usare un while ma è sconsigliato. per scorrere gli array è più performante la struttura foreach()
    Il più performante è il for.

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.