PHP usort - 函数'comp'未找到或函数名无效

3
我正在尝试根据数组中的值对其进行排序。我尝试了以下方法:
function comp($a, $b)
{
        return strcmp($a["name"], $b["name"]);
}

在我的函数类中,但是当从同一类中调用它时。
    $usersInSection = $userManager->getUsersInSection($section);
    usort($usersInSection, "conp");

我收到了消息

usort()函数期望参数2为有效回调函数,但是找不到名为'comp'的函数或该函数名无效


我猜你是指 usort($usersInSection, "comp"); 而不是你写的 'conp'。差一点... 如果你已经更正了并且仍然不起作用,请更新你的问题。告诉我们下一个错误是什么。嗯,你说的 'functions class' 是什么意思!? - undefined
全局声明的function 'comp()',以及$this->comp()的实例方法和static function comp()的静态类方法,即'self::comp()',它们都是完全独立的东西。你需要哪个?它们在usort中以不同的方式被称为callbacks - undefined
4个回答

14

如果你的计算机在一个类中,那么它就是一个方法。

要在同一类方法中使用它,需要这样调用:

usort($usersInSection, array($this, "comp"));

5

0

看起来你在 usort($usersInSection, "conp") 中有一个拼写错误。你的函数叫做 comp 而不是 conp


发布后意识到问题并进行了更正,但问题仍然存在。 - undefined

0
在我的函数类中
所以你有一个用来保存辅助函数的类,因此`comp`实际上是该类的一个方法?
然后你需要将类名或类实例(对于非静态方法)传递给`usort`,方式与 `call_user_func_array`的手册中描述的方式相同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接