Credo tu debba usare la funzione usort
L'esempio#2 dovrebbe fare al caso tuo.