Visualizzazione risultati 1 fino 9 di 9

Discussione: Creare ed ordinare array in array in base a %

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito Creare ed ordinare array in array in base a %

    Buongiorno,
    mi trovo nuovamente davanti un dilemma.

    Se io volessi creare una cosa del genere:

    Codice PHP:
    Array("uno"=>array("size"=>35456412,"lastmod"=>3245641),
    "due"=>array("size"=>54101854,"lastmod"=>"5342127"));
    Per poi ordinarla in base al nome ("uno","due") o in base alla dimensione ("size") quali funzioni dovrei utilizzare?

    Non voglio la pappardella pronta ma solo il nome delle funzioni da utilizzare.

    Michelangelo
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    Guest

    Predefinito

    ciao...

    una delle funzioni è

    sort($array);

    Comunque, se hai voglia di leggere...qui trovi tutte le funzioni degli array:
    http://www.php.net/manual/en/ref.array.php


    Valentino

  3. #3
    gingir non è connesso Neofita
    Data registrazione
    01-11-2010
    Messaggi
    6

    Predefinito

    in questo caso ti serve asort() per mantenere la index association

  4. #4
    Guest

    Predefinito

    giusto :-)
    hai ragione

  5. #5
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Altri pareri? Perché in realtà dovrebbe usare ksort(), visto che vuole ordinare l'array in base alla chiave.

    Per ordinare in base ad un campo di una sotto-array non c'è nulla di già pronto, ma puoi appoggiarti ad uasort() e decidere in base a quello che vuoi. Per un normale campo, io mi tiro dietro da tempo questa
    Codice PHP:
    function aasort(&$mixed, $key) {
    uasort ( $mixed, create_function('$a,$b', "return strcmp(\$a['$key'], \$b['$key']);") );
    }

  6. #6
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Altri pareri? Perché in realtà dovrebbe usare ksort(), visto che vuole ordinare l'array in base alla chiave.

    Per ordinare in base ad un campo di una sotto-array non c'è nulla di già pronto, ma puoi appoggiarti ad uasort() e decidere in base a quello che vuoi. Per un normale campo, io mi tiro dietro da tempo questa
    Codice PHP:
    function aasort(&$mixed, $key) {
    uasort ( $mixed, create_function('$a,$b', "return strcmp(\$a['$key'], \$b['$key']);") );
    }
    Perfetto! Ti ringrazio mi sei stato molto più che utile!
    Apprezzi l'aiuto? Offrimi un caffè!

  7. #7
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Nota che la funzione sopra fa un confronto fra stringhe. Se stai gestendo solo numeri, ti conviene cambiare con un confronto fra numeri, e via così.

  8. #8
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Nota che la funzione sopra fa un confronto fra stringhe. Se stai gestendo solo numeri, ti conviene cambiare con un confronto fra numeri, e via così.
    Non ho capito bene, me lo spiegheresti semmai con un esempio?*

    Altra cosa, mi sapresti aiutare a creare un esempio di array del mio post #1?
    Cioè se devo scriverlo io non ci sono problemi, ma non so come farlo creare da PHP.

    *EDIT: Ho capito cosa intendevi, mi aiuti per la seconda parte?
    EDIT2: Purtroppo ho solo ora notato che il tuo codice non va tanto bene perchè quella tua funzione vale solo se ci sono 2 elementi, mentre io ne ho un TOT variabile.

    Suggerimenti?
    Ultima modifica di miki92 : 02-11-2010 alle ore 17.23.13
    Apprezzi l'aiuto? Offrimi un caffè!

  9. #9
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    La funzione prendere un array (di array), quindi può essere usata anche con più di due elementi. Quello che vedi con due parametri è la funzione di confronto usata per ordinare gli elementi dell'array. Leggiti la guida per uasort().

    Riguardo all'esempio, cosa dovrebbe essere? Se sono file, con dimensione e data di modifica, l'ho scritto una volta e non voglio più metterci mano - guardati i sorgenti di dfilelist

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •