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

    array_multisort() ordinamento PHP

    Salve

    Il mio problema riguarda l'ordinamento ovvero:

    dovrei ordinare dei vettori, questi vettori altro non sono che i record di una tabellla sql ottenute con la funzionephp mysql_fetch_array (un vetore per riga ovviamente).
    In buona sostanza dovrei ordinare queste righe (quindi vettori) scondo due campi della tabela sql (preciso che non posso farlo direttamente via sql con 'order' by perchè non sono estratti direttamente dal database).
    Ho pensato di utilizzare la funzione array_multisort
    per utilizzarla, costruisco dei vetori che contengano ognuno un campo solo della tabella:
    immaginiamo la tabella che contenga i campi a, b, c, d.
    quindi creo i vettori $a $b $c $d (le colonne della tabella praticamente)
    li metto tutti dentro un altro vettore $vettore($a, $b, $c, $d).
    Quindi con la funzione faccio
    Codice PHP:
    array_multisort($vettore[0], $vettore[1]) 
    Il mio dubbio a quasto punto, è se ordino in questo modo mi ordina solo il primo e il secondo vettore lasciando invariati gli altri?

    A me ovviamente interessa che tutti i vettori vengano ordinati solidalmente, perchè il primo valore di ognuno è legato al primo dell'altro, così come il secondo, il tero ecc...
    In quano i vettori sono le colonne dela tabella, quindi non avrebbe senso ordinare soltanto la prima e la seonda colonna.
    Io voglio ordinare i record di tutta la tabela secondo la prima e poi la econda colonna.

    Quindi vorrei sapere se il metodo che uso può funzionare,
    se non dovesse essere così, qualcuno conosce un metodo che funzioni?

    Grazie.

  2. #2
    Avendo già trovato una soluione da solo, la riporto, anche se mi interesserebbe comunque la risposta alle domande del post precedente.

    Ho risolto lasciando i vettori $a $b $c $d (che contngono le colonne della tabella) indipendenti ovvero non inserendoli in un altro vettore.

    Richiamo quindi la funzione passando tutti i vettori, come se volessi ordinare secondo tutti, quando invece a me interessa ordinare solo per i primi due, che però scrivo per primi nella funzione in modo che siano quelli privilegiati nell'ordinamento, ottenendo quindi lo stesso risultato.
    Devo passarli tutti, perchè essendo vettori tra loro indipendendi, la funzione non può sapere che $a e $b sono legati a $c e $d se non li inserisco anch'essi in funzione.

    Mi rimane il dubbio nel caso in cui siano invece parte di un vettore che li contiene tutti.
    Codice PHP:
    array_multisort($a$b$c$d
    Avendo già trovato la soluzione il mio dubbio può apparire superfluo,mha...
    come ho fatto io la funzione cercherà di ordinare innanzi tutto secondo il primo campo, poi per il secondo, il terzo e così via...
    Ovviamente cercando di ordinare anche secondo i vettori che a me non interessano ordinati (ma che asserisco solo per mentenere le correlazioni tra i campi), impiegherà del tempo (tempo quindi superfluo) che in caso di tabelle a molti vettori (campi) e molti record, potrebbe cominciare a essere rilevante.
    Quindi se esistesse un modo per far si che l'odinamento avenga solo per i primi due vettori, mantenendo le correlazioni anche con gli altri questo farebbe risparmiare risorse.
    Grazie.

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.