Come fare un ordinamento multidimensionale con PHP

Può capitare di volere ordinare un vettore di dati in ordine ascendente o discendente, e fin quando ha una sola dimensione l'operazione di ordinamento è abbastanza semplice in quanto esistono istruzioni PHP come SORT che ti permettono di mettere automaticamente in sequenza i dati dal più basso al più alto o viceversa.

un esempio di ordinamento semplice dei dati di un vettore

Le cose si complicano quando devi elaborare una matrice, ossia un vettore multiplo o array multidimensionale, dove hai due vettori associati tra loro ma non puoi ordinarli singolarmente perché l'ordinamento farebbe perdere l'associazione sulla disposizione dei record nei due vettori. Nella seguente dimostrazione ogni campo del primo vettore è associato al corrispettivo campo del secondo vettore, e così via. Se ordini i due vettori perdi la combinazione originaria fra le posizioni e un'informazione rilevante dei dati nella tabella.

esempio di ordinamento semplice dei dati su un vettore

Cercando di capire come fare un ordinamento multidimensionale sul primo vettore senza perdere l'accoppiamento con il secondo, sono incappato in un'istruzione specifica del linguaggio PHP molto utile. Il comando array_multisort ti consente la comparazione e l'ordinamento del primo vettore, in ordine ascendente oppure discendente, mantenendo nello stesso tempo la stessa combinazione nella disposizione dei dati sul secondo vettore.

array_multisort ( array1, array2 );

Ad esempio, per ordinare il primo array $a senza rimetterci l'associazione in esatta successione con i record del secondo array $b, puoi scrivere l'istruzione dell'ordinamento multi dimensionale PHP nella seguente forma:

array_multisort ( $a, $b );

In poche frazioni di secondo l'istruzione effettua l'ordinamento multidimesionale dei dati su entrambi i vettori. Sul vettore $a ( prima dimensione ) è applicata la procedura di SORT vera e propria, il vettore $b ( seconda dimensione ) viene invece modificato per mantenere l'esatta associazione con i dati del primo.

esempio di ordinamento multidimensionale dei dati su due vettori

L'istruzione array_multisort è molto potente e puoi personalizzare l'ordinamento dei vettori in molti modi, modificando i parametri interni e i flag. Ad esempio, puoi decidere di ordinare i dati del primo vettore in ordine crescente, dal minore al maggiore, o discendente, dal maggiore al minore, inserendo rispettivamente il flag SORT_ASC o il flag SORT_DESC. L'ordinamento del vettore funziona sia su dati numerici che alfanumerici.

array_multisort ( $a, SORT_DESC, $b );

Ci sono molte altre potenzialità nell'istruzione dell'ordinamento multiplo dei dati ma è inutile allungare troppo la spiegazione, quello che è più importante in questo tutorial, è avere risolto il problema e aver imparato a ordinare in modo multidimensionale i dati in modo rapido, senza dover sviluppare degli appositi sottoprogrammi di ordinamento all'interno del programma PHP.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Il linguaggio Php

FAQ