Newsgroup: it.comp.www.php
Titolo: Ordinamento array multidimensionale

Ciao a tutti.
Ho un array di questo tipo:
Array
(
    [5001638063] => Array
        (
            [ranking] => 8
            [superior] => 1
            [name] => Villa Del Parco
            [address] => Via Dell'ostrica
            [city_id] => 1122
            [description] => Array
                (
                    [IT] => Array
                        (
                            [description] => Bla bla bla ITA
                        )
                    [EN] => Array
                        (
                            [description] => Bla bla bla ENG
                        )
                )
            [thumbnail] => 
http://www.dominio.com/1196385782-mini.jpg
            [city_name] => Roma
        )
 
[5006304364
] => Array
        (
            [ranking] => 5
            [superior] => 0
            [name] => Il mio nome
            [address] => Viale Dell'impero
            [city_id] => 5421
            [description] => Array
                (
                    [IT] => Array
                        (
                            [description] =>  Bla bla bla ITA
                        )
                    [EN] => Array
                        (
                            [description] => Bla bla bla ENG
                        )
                )
            [thumbnail] => 
http://www.dominio.com/1190388773-mini.jpg
            [city_name] => Milano
        )
)
Avrei bisogno di ordinarlo per i campi 'interni' quali 'ranking',
'superior', 'name' etc etc ed anche per quello esterno
con il codice.
Per quello esterno credo non ci siano problemi, dovrebbe bastare un
asort, ma per quelli interni?
I dati provengono da delle tabelle mysql su database diversi, fare
delle join ed ordinare quelle è un problema non indifferente.
Preferirei ordinare lato PHP finchè non riesco a strutturare una join
tra le tabelle.

 tra le tabelle.
se ho capito bene.. 
http://php.net/uasort
 ..
-- 
www.iuz-lab.info
 - 
www.php-faq.org

 se ho capito bene..
http://php.net/uasort
..
Io invece non ho la minima idea di come usare tale funzione.
Ho letto la documentazione sia adesso che oggi e non saprei da dove
cominciare...
Però non credo faccia al caso mio.
Avrei bisogno, nel caso di cui sopra, di ordinare il tutto, ad
esempio, per 'ranking' crescente quindi ottenere prima questo array:
5006304364
e poi:
5001638063
ovviamente mantenendo inalterato il valore dei campi al suo interno...
Le ultime volte che ho fatto alcuni tentativi per ordinare un array
multidimensionale, mi si smontava tutto e le coppie chiave/valore
venivano completamente sballate.
Sarei grato se qualche anima pia potesse inviarmi una riga di codice
cut&paste per ordinare tale array....

 cut&paste per ordinare tale array....
non credo di aver capito..
comunque.. non testato e senza controllo degli errori..
function order_num ($key, $v1, $v2)
{
 if ($v1[$key] == $v2[$key])
  return 0;
 return ($v1[$key] < $v2[$key]) ? -1 : 1;
}
function order_by_rank ($v1, $v2)
{
 return order_num('ranking', $v1, $v2);
}
$my_array = array(...);
uasort($my_array, 'order_by_rank');
-- 
www.iuz-lab.info
 - 
www.php-faq.org

 asort, ma per quelli interni?
Very useful function:
http://www.ichier.de/page.php?id=380
-- 
doh!