Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698

    Array associativo non permette accesso con indici numerici?

    Mi è capitato spesso di creare array associativi e di accedere successivamente al contenuto con indici numerici.

    Questa volta non so proprio che succede:

    codice:
    while (qualcosa)
    {
        $stringa = qualche_funzione();
        $arr[ $stringa ] = qualche_valore();
       
        //ecc
    }
    
    //ora questa stampa
    
    var_dump($arr[0])
    
    //restituisce NULL
    diversamente, se scorro l'array in un ciclo foreach() riesco a recuperare tutti i valori.

    Qualche mandrakata da suggerire?

  2. #2
    prova a scrivere questo

    foreach ( $array as $key => $value )
    echo $key." => ".$value."
    ";

    che ti stampa??

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    te l'ho detto, nei cicli foreach stampo valore e chiave senza problemi

  4. #4
    scusa se forse nn sto capendendo..cn quel var_dump($arr[0]) che intendi?

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    intendo che var_dump($arr[0]) restituisce null, come se nella posizione 0 dell'array non ci fosse nulla

    ho provato a fare un reset pensando che magari si fossero sputtanati gli indici per qualche motivo ma ancora niente

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    No, gli array associativi non hanno "indici numerici".
    In realtà anche gli array "normali" non sono altro che array associativi con le chiavi numeriche se ci pensi, tanto che posso tranquillamente AGGIUNGERE un record associativo ad un array che teoricamente non lo è, tipo
    Codice PHP:
    $x = array();
    $x[] = "valore1";
    $x[] = "valore2";
    $x["chiave"] = "valore3";
    // a questo punto vorresti che "valore3" fosse reperibile con $x[2], ma posso anche fare questo
    $x[2] = "valore4"// e l'array rimane con TUTTI e quattro i valori
    // facendo infatti
    print_r($x)
    // ottengo: Array ( [0] => valore1 [1] => valore2 [chiave] => valore3 [2] => valore4 ) 
    Puoi però crearti una funzione "personalizzata"... ricordando però che per questa funzione il TERZO elemento è "chiave"=>valore3, mentre il quarto è [2]=>valore4

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    Questa cosa non mi convince molto

    Se tu sai per certo che gli array associativi hanno un comportamento diverso da quelli tradizionali..beh, me ne farò una ragione.

    Ma non penso proprio che un array numerico sia un array associativo con le chiavi numeriche...è una cosa che per la macchina e per l'interprete del codice non ha nessun senso

    Penso piu che altro che si tratti probabilmente di una matrice, che quando usi array a chiave stringa va a mappare l'indice numerico con quello testuale risparmiandoti tante menate. Per questo non riesco a credere che un array associativo sia inaccessibile con indici numerici.

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.