The more I think about it, the more reluctant I am to do this - ok the usort function doesn't care whether the compare function returns -1 or anything less than 0, but strictly, since this is a compare function, I think that the value returned should either bear some relation to the order of difference between the two objects, or be a simple ternary, rather than returning a value that might imply that the difference between objects `$a` and `$b` is greater than that between objects `$b` and `$c` when in fact `$a` just has more parameters than `$b` (an integer difference) while perhaps there is a small (double) difference in `q` value between `$b` and `$c`.