Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    71

    ordinare array bidimensionale

    Ciao salve a tutti

    Ho un array di questo tipo:
    Codice PHP:
    $a = array();
     
    $a[0] = array("cartoon" => 2"descrizione" => "pippo","tipo" => "padre");
     
    $a[1] = array("cartoon" => 5"descrizione" => "pluto","tipo" => "figlio");
     
    $a[2] = array("cartoon" => 1"descrizione" => "paperino","tipo" => "spirito_santo"); 
    vorrei un l''array in ordine crescente di cartoon

    Grazie

  2. #2
    Dal manuale php:

    Esempio 3. Ordinamento dei risultati di un database

    In questo esempio, ogni elemento nell'array data rappresenta un record della tabella. Questo genere di dato è tipico dei record di database.

    Esempio di dati:

    volume | edition
    -------+--------
    67 | 2
    86 | 1
    85 | 6
    98 | 2
    86 | 6
    67 | 7


    I dati sono in un array, chiamato data. Di solito questo si ottiene ciclando, ad esempio, con mysql_fetch_assoc().

    <?php
    $data[] = array('volume' => 67, 'edition' => 2);
    $data[] = array('volume' => 86, 'edition' => 1);
    $data[] = array('volume' => 85, 'edition' => 6);
    $data[] = array('volume' => 98, 'edition' => 2);
    $data[] = array('volume' => 86, 'edition' => 6);
    $data[] = array('volume' => 67, 'edition' => 7);
    ?>


    In questo esempio ordineremo volume in senso discendente, edition in senso ascendente.

    Abbiamo un array di record, ma array_multisort() richiede un array di colonne, quindi usiamo il codice qui sotto per ottenerlo, quindi eseguiremo l'ordinamento.

    <?php
    // Ottiene un array di colonne
    foreach ($data as $key => $row) {
    $volume[$key] = $row['volume'];
    $edition[$key] = $row['edition'];
    }

    // Ordina 'volume' in senso discendente, 'edition' in senso ascendente
    // Aggiungere $data come ultimo parametr per ordinare sulla chiave comune
    array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
    ?>


    Il set di dati è ora ordinato, e apparirà così:

    volume | edition
    -------+--------
    98 | 2
    86 | 1
    86 | 6
    85 | 6
    67 | 2
    67 | 7
    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    71
    ti ringrazio, ma mi sono dimenticato un particolare:

    Codice PHP:
    $a = array(); 
     
    $a[0] = array("cartoon" => 2"descrizione" => "pippo","tipo" => "padre","anni" => 5); 
     
    $a[1] = array("cartoon" => 5"descrizione" => "pluto","tipo" => "figlio","anni" => 1); 
     
    $a[2] = array("cartoon" => 1"descrizione" => "paperino","tipo" => "spirito_santo","anni" => 3); 
    Voglio ordinare per anni!

    Grazie

  4. #4
    e non puoi ordinare $anni come nell'esempio è ordinato $volume ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    71
    ...ma la questione è che voglio ordinare l'array per anni ma conservando l'ordine,
    nel senso:
    Codice PHP:
    $a = array();  
     
    $a[0] = array("cartoon" => 2"descrizione" => "pippo","tipo" => "padre","anni" => 5);  
     
    $a[1] = array("cartoon" => 5"descrizione" => "pluto","tipo" => "figlio","anni" => 1);  
     
    $a[2] = array("cartoon" => 1"descrizione" => "paperino","tipo" => "spirito_santo","anni" => 
    ordinato:
    Codice PHP:
    $a = array();  
     
    $a[1] = array("cartoon" => 5"descrizione" => "pluto","tipo" => "figlio","anni" => 1);
    $a[2] = array("cartoon" => 1"descrizione" => "paperino","tipo" => "spirito_santo","anni" => 
     $a
    [0] = array("cartoon" => 2"descrizione" => "pippo","tipo" => "padre","anni" => 5); 
    Mi potreste dare una mano??
    Grazie

  6. #6
    Basta copiare l'esempio del manuale!

    Questo è l'esempio:
    codice:
    foreach ($data as $key => $row) {
        $volume[$key]  = $row['volume'];
        $edition[$key] = $row['edition'];
    }
    array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
    e questo è ciò che serve a te
    codice:
    foreach ($a as $key => $row) {
        $anni[$key]    = $row['anni'];
        $cartoon[$key] = $row['cartoon'];
    }
    array_multisort($anni, SORT_ASC, $cartoon, SORT_ASC, $a);
    Sono identici, qual è il problema?
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

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.