【问题标题】:php usort - function 'comp' not found or invalid function namephp usort - 未找到函数“comp”或函数名称无效
【发布时间】:2015-11-27 19:39:27
【问题描述】:

我正在尝试根据数组中的值对数组进行排序。我已经尝试了以下

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'!?
  • 全局声明的function 'comp()' 和$this->comp()instance methodstatic function comp()static class method 为'self::comp()'。都是完全独立的东西。你有哪个?它们都以不同的方式称为callbacks in usort

标签: php


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    在类中使用回调调用 usort 的语法是:

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

    查看PHP Manual: Callbacks / Callables

    【讨论】:

      【解决方案3】:

      您在 usort($usersInSection, "conp") 中似乎有错字。你的函数被称为comp 而不是conp

      【讨论】:

      • 在发布并更正后发现问题仍然存在
      【解决方案4】:

      在我的函数类中

      所以你有一个类来保存辅助函数(?),因此comp 实际上是该类的一个方法

      然后您必须将类名或类实例(对于非静态方法)传递给usort,方法与manual for call_user_func_array 中描述的相同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-09
        • 2019-01-25
        • 2012-02-14
        • 1970-01-01
        • 2010-11-16
        • 2018-11-19
        • 1970-01-01
        • 2010-11-08
        相关资源
        最近更新 更多