Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    217

    Echo di un intero array multidimensionale

    Ho un array multidimensionale di questo tipo: $testo[number][name][timestamp]

    Inserito in un ciclo for per $number, avrei bisogno di fare un'echo del contenuto (non della struttura! quindi non funzioni tipo var_dump), in ordine alfabetico di $name e in ordine crescente di $timestamp.

    Ho dei problemi con foreach: non capisco la sua sintassi, nè sono convinto sia la via giusta per la soluzione (scusatemi, principiante-amatore!)

  2. #2
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Ciao, come da manuale - Example#3 - della funzione array_multisort() puoi risolvere così:
    Codice PHP:
    // $testo[number][name][timestamp]

    // Obtain a list of columns
    foreach ($testo as $key => $row) {
        
    $name[$key]  = $row['name'];
        
    $timestamp[$key] = $row['timestamp'];
    }

    // Sort the data with volume descending, edition ascending
    // Add $data as the last parameter, to sort by the common key
    array_multisort($nameSORT_ASC$timestampSORT_ASC$testo); 

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    217
    Originariamente inviato da jcsnake
    Ciao, come da manuale - Example#3 - della funzione array_multisort() puoi risolvere così:
    Codice PHP:
    // $testo[number][name][timestamp]

    // Obtain a list of columns
    foreach ($testo as $key => $row) {
        
    $name[$key]  = $row['name'];
        
    $timestamp[$key] = $row['timestamp'];
    }

    // Sort the data with volume descending, edition ascending
    // Add $data as the last parameter, to sort by the common key
    array_multisort($nameSORT_ASC$timestampSORT_ASC$testo); 
    Grazie, ora lo provo!
    Ma l'array_multisort devo eseguirlo prima di ciclare l'array, immagino giusto?

  4. #4
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    no è necessario in quanto array_multisort() come parametri richiede array di colonne e non array di righe come l'intera variabile $testo...
    We have an array of rows, but array_multisort() requires an array of columns, so we use the below code to obtain the columns, then perform the sorting.
    Solo dopo si può eseguire il sorting.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    217
    Ho riarrangiato secondo le mie esigenze, ma mi restituisce errore:
    Warning: Invalid argument supplied for foreach() in /web/tommasogaspari.it/www/fantariviera/echo_rose.inc.php on line 41
    codice:
    for ($id_proprietario = 1; $id_proprietario <= $numero_allenatori; ++$id_proprietario) { 		
        foreach ($testo[$id_proprietario] as $key => $data) {
            echo $data['timestamp'];
        }
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    217
    Originariamente inviato da jcsnake
    no è necessario in quanto array_multisort() come parametri richiede array di colonne e non array di righe come l'intera variabile $testo...

    Solo dopo si può eseguire il sorting.
    Forse ho capito. In pratica nel foreach tu mi fai creare 2 array nuovi, poi con multisort li riordino. Fatto questo, vado semmai a ciclarli per fare tutti i miei echo... è così?

  7. #7
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Il tuo array è di questo tipo?
    $testo[] = array('number'=>1,'name' => 'tizio','timestamp' => 2034856);
    altrimenti la funzione che ti ho postato non si può utilizzare...

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    217
    Originariamente inviato da jcsnake
    Il tuo array è di questo tipo?
    $testo[] = array('number'=>1,'name' => 'tizio','timestamp' => 2034856);
    altrimenti la funzione che ti ho postato non si può utilizzare...
    No, è multidimensionale

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    217
    E' strutturato così:

    codice:
    1 -> P -> 123456790 = 230
                   123456794 = 567
           A -> 123450090 = 200
                   123456120 = 406
           D -> 123423090 = 209
                   123456124 = 408
    2 -> P -> 120000235 = 130
           C -> 123243290 = 202
                   124536790 = 400
                   123456235 = 344
           D -> 123234236 = 205
                   123456235 = 306
    Quindi, nel ciclo for da 1->10, ciclo il primo livello, poi ho bisogno di ordinare il secondo in ordine alfabetico, quindi il terzo in ordine crescente e stampare il suo contenuto con quest'ordine.

  10. #10
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    questo array cambia nel tempo, si modifica o rimane sempre lo stesso per tutta la durata dello script?

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.