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'));
我对 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'));