我有一个问题,我不喜欢第二个参数(排序功能)。我在课堂上看到很多关于这个问题的问题,答案就是传递array($this, functionName)
数组
但就我而言,这是行不通的。该脚本不是类,但我收到此错误:
PHP Warning: usort() expects parameter 2 to be a valid callback, function 'cmp' not found or invalid function name in <filename.php>
那么第二个参数,即函数名称的问题是什么?这是直接来自PHP网站的示例代码。
答案 0 :(得分:6)
如果代码不在类中,但您正在使用命名空间,则usort期望第二个参数定义该命名空间。但不是类似于在类中使用usort的数组。
这对我有用,'cmp'是排序功能:
usort($arrayToSort, 'My\Full\Namespace\cmp');
答案 1 :(得分:0)
我将回调函数放到了将usort()放到里面的函数中。
function callerFn() {
if (!function_exists('callbackFn')) {
function callbackFn() {}
}
usort($arrayToSort, "callbackFn");
}
您也可以将其作为未命名函数使用
function callerFn() {
usort($arrayToSort, function() {} );
}
答案 2 :(得分:0)
如果这有帮助,(因为这是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'));