微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP注意:类Closure的对象无法转换为int

我在我的申请中收到了一个奇怪的警告通知.我在一个类中使用自定义的usort函数.这是它的样子:

class Class_Name
{
    function zstream_builder()
    {
            $array = some_array();
        //sort posts by date DESC
        usort($array, array('Class_Name', 'zstream_sorter')); // <- the notice is thrown on this line

        return $array;
    }

    private static function zstream_sorter($key = 'sort_str_date')
    {
        return function ($a, $b) use ($key)
        {
            return strnatcmp($a[$key], $b[$key]);
        };
    }
}

这是我得到的通知

注意:类xcl的对象无法在xx行的PATH_TO_FILE中转换为int

有任何想法吗?

解决方法:

usort将调用Class_Name :: stream_sorter作为比较函数,并传递两个参数.返回值是一个函数,但是usort需要一个整数来告诉它哪个参数更大.您需要将Class_Name :: stream_sorter的返回值传递给usort,而不是函数本身:

usort($array, self::zstream_sorter());

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐