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

    Doppio o triplo criterio di ordinamento array

    Ciao, ho un array con diversi valori dentro e vorrei ordinarlo con criterio "in stile excel" per campo A e poi per campo B e poi per campo C.
    In pratica l'array è una classifica:
    Squadra,Punti,PartiteVinte,PartitePerse,PuntiFatti ,PuntiSubiti

    Ho gia' fatto l'ordinamento (dal più grande al più piccolo, ovviamente) dei Punti con "usort()"
    Codice PHP:
    usort($arr_classifica, function($a$b) {    return $b['Punti'] > $a['Punti'];}); 
    e parrebbe funzionare.
    MA vorrei che, a parità di Punti, venisse mostrata più in alto la squadra con più PartiteVinte, e a parità di queste venisse messa più alto quella con il risultato più alto dell'operazione "PuntiFatti/PuntiSubiti".

    Come si può fare?
    Fantasupermegafavolipermeramagicultra irresistibili
    4 10 30 100 1001 personaggi insuperabili fantaincredibili ultraimpossibili iperterribili irresistibili!!!

    "... a quell'età ... bastava un dito per fare la pace ..."
    fotine

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Devi controllare la condizione == per ogni campo
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    Non ho capito ... mi fai un esempio? (o un link)
    Fantasupermegafavolipermeramagicultra irresistibili
    4 10 30 100 1001 personaggi insuperabili fantaincredibili ultraimpossibili iperterribili irresistibili!!!

    "... a quell'età ... bastava un dito per fare la pace ..."
    fotine

  4. #4
    non ho capito se vuoi l'ordinamento crescente o meno, al limite cambia i "-1" e "1"

    Codice PHP:

    <?php

    $classifica 
    = [
        [
    'Squadra' => 'c''Punti' => 25'PuntiFatti' => 15'PuntiSubiti' => 10],
        [
    'Squadra' => 'b''Punti' => 2'PuntiFatti' => 15'PuntiSubiti' => 10],
        [
    'Squadra' => 'a''Punti' => 2'PuntiFatti' => 20'PuntiSubiti' => 10],
        
        
    ];

    usort($classifica, function($a$b){

        if(
    $a['Punti'] == $b['Punti'])
        {
            
    $aPer $a['PuntiFatti']/$a['PuntiSubiti'];
            
    $bPer $b['PuntiFatti']/$b['PuntiSubiti'];
            
            return 
    $aPer == $bPer : ( $bPer $aPer : -1);
        }

        return 
    $b['Punti'] > $a['Punti'] ? : -1;
    });

    print_r($classifica);
    questo è l'esempio
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Perfetto ... grazie mille
    Fantasupermegafavolipermeramagicultra irresistibili
    4 10 30 100 1001 personaggi insuperabili fantaincredibili ultraimpossibili iperterribili irresistibili!!!

    "... a quell'età ... bastava un dito per fare la pace ..."
    fotine

Tag per questa discussione

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.