PHP usort() expects parameter 2 to be a valid callback, not in a class

Deltaxfx picture Deltaxfx · Jul 6, 2016 · Viewed 9.8k times · Source

I have a problem with usort not liking the second parameter (the sorting function). I have seen a lot of questions about this being a problem when in a class, and the answer for that is to pass an array of array($this, functionName) But in my case this is not working. The script is not a class, but I am getting this error:

PHP Warning:  usort() expects parameter 2 to be a valid callback, function 'cmp' not found or invalid function name in <filename.php>

So what is the problem with the second parameter, the function name, not being found? This is example code straight from the PHP website.

Answer

Deltaxfx picture Deltaxfx · Jul 6, 2016

If the code is not in a class, but you are using a namespace, usort expects the second parameter to have that namespace defined. But not in an array in similar style to using usort in a class.

This worked for me, where 'cmp' is the sorting function:

usort($arrayToSort, 'My\Full\Namespace\cmp');