La funzione che passi a usort() serve per definire il criterio di ordinamento, cioe' dati 2 elementi dell'array deve dire quale va considerato come "prima" e quale come "dopo".

Per fare questo usort() si aspetta che la funzione restituisca -1 se il primo dei due elementi va considerato minore del secondo, +1 se il primo va considerato maggiore del secondo, 0 se sono equivalenti. Il resto lo fa usort, ciclando sull'array da ordinare e passando alla funzione custom coppie di valori finche' il risultato non e' completamente ordinato.