Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Ordinare array in base a più parametri

    Salve, per una classifica che devo realizzare ho la necessità di ordinare dei dati secondo due campi numerici (voto,numero_voti), in ordine decrescente.
    Ad esempio se i campi fossero del tipo
    voto=[4 1 5 1]
    numero_voti=[9 5 0 3]
    vorrei che il risultato dell'ordinamento fosse
    voto=[5 4 1 1]
    numero_voti=[0 9 5 3]
    Quindi ordinati prima secondo "voto" e poi secondo "numero_voti"

    Leggendo il forum mi sembra di aver capito che la soluzione sia inserire i dati in un array multidimensionale e usare la funziona array_multisort() di php giusto?
    Ho quindi provato con questo codice
    codice:
    $voto[0]=4; $voto[1]=1; $voto[2]=5; $voto[3]=1;
    $numero_voti[0]=9; $numero_voti[1]=5; $numero_voti[2]=0; $anumero_voti[3]=3;
    array_multisort($voto,SORT_DESC,SORT_NUMERIC,$numero_voti,SORT_DESC,SORT_NUMERIC);
    Questo non mi restituisce però il risultato sperato. Dove sbaglio?

    Grazie mille

  2. #2
    up... scusate, ma non riesco proprio a trovare la soluzione...

  3. #3
    Nel manuale della funzione c'é spiegato bene:
    http://it.php.net/manual/it/function...-multisort.php

    Cmq l'esempio che hai fatto tu non é un array multidimensionale, ma due array distinti.
    Quello multidimensionale lo vedi nel secondo esempio del manuale.

    Nel tuo esempio c'é anche una variabile con nome sbagliato: $anumero_voti

  4. #4
    ho fatto un test anche io e in effetti non funzia..l'unica che ho trovato è usare ARSORT per ogni array!

    Codice PHP:
    <?php
     $voto
    [0]=4$voto[1]=1$voto[2]=5$voto[3]=1;
    $numero_voti[0]=9$numero_voti[1]=5$numero_voti[2]=0$anumero_voti[3]=3;
    arsort($voto);
    arsort($numero_voti);
    var_dump($voto);
    var_dump($numero_voti);
    ?>

  5. #5
    Avevo già provato con array del tipo
    codice:
    $voto[0][0]=4; $voto[0][1]=1; $voto[0][2]=5; $voto[0][3]=1;
    $voto[1][0]=9; $voto[1][1]=5; $voto[1][2]=0; $voto[1][3]=3;
    array_multisort($voto[0],SORT_DESC,SORT_NUMERIC,$voto[1],SORT_DESC,SORT_NUMERIC);
    ma non funziona comunque.

    Non posso usare arsort() sui due array distinatamente, io devo ordinare dei dati secondo due campi. Principalmente per il primo, nel caso in cui siano uguali devo confrontare il secondo...

  6. #6
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    A me funziona...e se non ho capito male fa esattamente quello che volevi:

    questo è l'output del mio script di test:
    Codice PHP:
    5 4 1 1 ]
    0 9 5 3 
    Sono ordianati in base al voto e poi (come si vede dagli ultimi due con voto 1) in caso di pari voto sono ordinati per numero di voti...

    Non era quello che volevi?

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.