PHP usort() 期望参数 2 是一个有效的回调,而不是 class

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

我对 usort 有疑问,不喜欢第二个参数(排序函数)。我看到很多关于在 class 中出现问题的问题,答案是传递 array($this, functionName) 的数组 但就我而言,这是行不通的。该脚本不是 class,但我收到此错误:

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

那么第二个参数函数名找不到是什么问题呢?这是直接来自 PHP 网站的示例代码。

如果代码不在 class 中,但您使用的是命名空间,则 usort 期望第二个参数定义该命名空间。但不是在与在 class.

中使用 usort 类似的数组中

这对我有用,其中 'cmp' 是排序函数:

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

我将回调函数放在我放置 usort() 的函数中并且它起作用了。

function callerFn() {

    if (!function_exists('callbackFn'))   {
        function callbackFn() {}
    }

    usort($arrayToSort, "callbackFn");

}

您也可以将其作为未命名函数来执行:

function callerFn() {

    usort($arrayToSort, function() {} );

}

如果这有帮助,(&因为这是 Google 的顶部),我必须这样做

class MyObj{
        var $Supplier;
        function cmp($m, $n) {
            if ($m->Supplier == $n->Supplier) {
                return 0;
            }
            return ($m->Supplier < $n->Supplier) ? -1 : 1;
         }
 }
      
 usort($arrayToSort, array('My\Full\Namespace\MyObj', 'cmp'));